Тернарный оператор оставил ассоциативность
В руководстве по PHP я нахожуследующее «пользователь добавил примечание» в разделе «Операторы».
Обратите внимание, что в php троичный оператор?: Имеет левую ассоциативность в отличие от C и C ++, где он имеет правую ассоциативность.
Вы не можете написать такой код (как вы, возможно, привыкли в C / C ++):
<?php
$a = 2;
echo (
$a == 1 ? 'one' :
$a == 2 ? 'two' :
$a == 3 ? 'three' :
$a == 4 ? 'four' : 'other');
echo "\n";
// prints 'four'
Я на самом деле пытаюсь, и это действительно печатаетfour
, Однако я не мог понять причину этого и все еще чувствую, что это должно напечататьtwo
или жеother
.
Может кто-нибудь объяснить, что здесь происходит и почему печатается «четыре»?