После написания моего ответа на вопрос как назначить несколько переменных в троичном операторе Я на самом деле опробовал код, который я написал:
true ? $w = 100 xor $r = 200 : $w = 300 xor $r = 400;
var_dump($w); var_dump($r);
(Не беспокойтесь, этобесполезно, это теоретически.)
Теперь я бы ожидал, что PHP будет делать это таким образом, в соответствии с приоритетом оператора :
true ? $w = 100 xor $r = 200 : $w = 300 xor $r = 400 ;
(true) ? ( $w = 100 xor $r = 200 ) : ( $w = 300 xor $r = 400 );
(true) ? (($w = 100) xor ($r = 200)) : (($w = 300) xor ($r = 400));
В качестве первой частитроичный оператор вычисляется, это должно вывести:
int 100
int 200
Но вместо этого я получаю
int 100
int 400
Это очень странно для меня, потому что это потребовало бы, чтобы части обачасти троичного оператора выполняются.
Предположим, это какая-то ошибка в моем мышлении.