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

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

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

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

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

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

Solutions Collecting From Web of "Утверждение php if с одним знаком равенства …? Что это значит?"

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

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

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

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

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

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

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

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

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

a = b = c = 0;

для назначения всех этих переменных одновременно.

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

Попробуйте сделать var_dump:

 var_dump( $payment_modules->confirmation() ); 

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

 class test() { public function confirmation() { return true; } } $boolean = test::confirmation(); var_dump( $boolean ); 

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