ИЛИ Изменение меняется с возвратом

Из того, что я вижу, приоритет операторов имеет смысл в этих двух примерах:

$a = false;
$b = true;
$c = $a || $b;

Здесь $ c правда

$a = false;
$b = true;
$c = $a or $b;

Здесь $ c ложный


Я понимаю причины этого. Однако следующее:

$a = false;
$b = true;
return $a or $b;

Возвращает истину, которая озадачивает меня.

Что является причиной этого?

2

Решение

or имеет более низкий приоритет, чем =так вот:

$c = $a or $b;

Становится так:

($c = $a) or $b;

Но это не имеет смысла:

(return $a) or $b;

Итак, вы получите это:

return ($a or $b);
4

Другие решения

В выражении применяется приоритет оператора. =, || а также or все операторы и $c = $a or $b это выражение. И в соответствии с приоритетом оператора он оценивается как ($c = $a) or $b,

Тем не мение, return это заявление. return не является оператором и не группируется по приоритету оператора. Это всегда оценивается как return <expression>и, следовательно, всегда как return ($a or $b),

Результат выражение $c = $a or $b является true КСТАТИ. $c назначается false в ходе выражения, но выражение в целом возвращает значение true ($b). Так что даже это return true:

return $c = $a or $b;
3