Я пытаюсь понять поведение оператора or
. Ниже приведены примеры:
$e = false || true;
var_dump($e);
Выход как ожидалось: bool(true);
$f = false or true;
var_dump($f);
Вывод выполняется так, как ожидалось: bool(false)
. Я понял это так, что =
имеет более высокий приоритет, чем or
, поэтому почему $f
назначается false
.
Но приведенный ниже код работает совершенно противоположно тому, что я думал. Я думал, что $foo
будет присвоен 5
, а затем сравним с самим собой.
Но $foo
получает назначение только тогда, когда установлено значение $foo
, что означает, что если $foo
назначен на что-либо раньше, назначьте ему 5.
$foo or $foo = 5;
Может кто-нибудь объяснить, почему это так?