Я пытаюсь понять поведение оператора 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; 
Может кто-нибудь объяснить, почему это так?
