Нашел несколько интересных фрагментов кода сегодня. Упрощенно это выглядит следующим образом:Приоритет операторов «или» и присвоение
$var = null;
$var or $var = '123';
$var or $var = '312';
var_dump($var);
Дело в том, что, как я знаю, precedence of assignment is higher that OR
, так как я предполагаю, var_dump
должен вывести 312
(первый - назначение, второй - сравнить логически). Но результат дефферентен, я получаю 123
(сначала - проверьте, $var
конвертирует в true
, второй - если нет, назначьте значение).
Вопросы, как это работает?
Почему такое же поведение для or
и ||
?
Это имеет смысл! Спасибо! Итак, причина в том, что «операторы короткого замыкания - это, по сути, управляющие структуры, а не простые арифметические операторы» – Timur