В руководстве PHP я нахожу следующую "записку, внесенную пользователем" в разделе "Операторы" .
Обратите внимание, что в php тернарный оператор?: имеет левую ассоциативность, в отличие от 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
.
Может кто-нибудь объяснить, что здесь происходит и почему он печатает "четыре"?