在任何理智的语言中,三元运算符都是右关联的,因此您 希望 代码被解释为:
$a = 2;echo ($a == 1 ? 'one' : ($a == 2 ? 'two' : ($a == 3 ? 'three' : ($a == 4 ? 'four' : 'other')))); # prints 'two'
但是,PHP三元运算符是怪异的左关联,因此您的代码实际上等效于此:
<?php$a = 2;echo (((($a == 1 ? 'one' : $a == 2) ? 'two' : $a == 3) ? 'three' : $a == 4) ? 'four' : 'other'); # prints 'four'
如果仍然不清楚,则评估如下:
echo ((((FALSE ? 'one' : TRUE) ? 'two' : $a == 3) ? 'three' : $a == 4) ? 'four' : 'other');echo ((( TRUE ? 'two' : $a == 3) ? 'three' : $a == 4) ? 'four' : 'other');echo (( 'two' ? 'three' : $a == 4) ? 'four' : 'other');echo ( 'three' ? 'four' : 'other');echo 'four';



