Сегодня нашел интересный фрагмент кода. Упрощенно это выглядит так:
$var = null;
$var or $var = '123';
$var or $var = '312';
var_dump($var);
Дело в том, что, насколько мне известно, приоритет присваивания выше, чем OR
< /a>, так что, как я предполагаю, var_dump
должно выводить 312
(первое — присваивать, второе — сравнивать логически). Но результат отличается, я получаю 123
(сначала - проверьте, конвертируется ли $var
в true
, затем - если нет, присвойте значение).
Вопросы как это работает?
Почему поведение or
и ||
одинаково?
Short-circuit operators are, in effect, control structures rather than simple arithmetic operators
05.04.2013