Подтвердить что ты не робот

Утверждение php if с одним знаком равенства...? Что это значит?

Я пытаюсь устранить проблему и вам нужно понять, что говорит этот оператор if:

if ($confirmation = $payment_modules->confirmation()) { 

Все ресурсы, которые я могу найти, показывают только выражения с двойными равными знаками, а не одиночными. Является ли это одной из сокращенных форм php, если? Что он делает?

(Если это действительно неправильный синтаксис, изменение его на знак двойного равенства не решает проблему.Как есть, в некоторых сценариях он возвращает true. В сценарии, который я искал, он не возвращает true пока я не обновить браузер.)

Любая помощь очень ценится!!!

4b9b3361

Ответ 1

Это форма стенографии, которая в точности эквивалентна этому:

$confirmation = $payment_modules->confirmation();
if ($confirmation) {

}

Ответ 2

Сначала присвойте значение $payment_modules->confirmation() $confirmation. Оператор = будет оценивать новое значение $confirmation.

Это имеет тот же эффект, что и запись:

$confirmation = $payment_modules->confirmation();
if ($confirmation) {
  // this will get executed if $confirmation is not false, null, or zero
}

Ответ 3

Код работает, потому что присваивание возвращает назначенное значение, поэтому, если $payment_modules->confirmation() - true, $confirmation будет установлено на true, а затем присваивание вернет true. То же самое для false.

Вот почему вы можете использовать команду для назначения для многих переменных, как в a = b = 0. Назначает ноль b и возвращает этот ноль. Поэтому он становится a = 0. И a получает нуль, и он возвращает этот ноль, который может или не может быть использован.

Ответ 4

= означает назначение ($ a = 1), == для сравнения (true = false false). Я думаю, что в вашем примере он должен использовать =, потому что он присваивает ему возвращаемое значение подтверждения, которое должно быть чем-то, что оценивается как true.

Попробуйте выполнить var_dump:

var_dump( $payment_modules->confirmation() );

Посмотрите, что логически это оценивается, и оттуда вы можете устранить неполадки. Если вам нужна дополнительная помощь, отправьте больше кода.

class test() {
    public function confirmation() { return true; }
}

$boolean = test::confirmation();
var_dump( $boolean );

Приравнивается к true

Ответ 5

Иногда люди любят выполнять задание, а затем проверяют, прошел ли уступка в порядке. Сопоставьте это с функциями, которые возвращают false (или эквивалент) при сбое, и вы можете выполнять назначение и проверку одновременно.

Чтобы понять это, помните, что назначения являются своего рода выражением, и поэтому (как и все выражения) имеют возвращаемое значение. Это возвращаемое значение равно тому, что попало в переменную. Вот почему вы можете сделать что-то вроде

a = b = c = 0;

чтобы назначить все эти переменные одновременно.