您需要括起三元条件:
for ($a=0; $a < 7; $a++) {
echo (
$a == 1 ? 'one' :
($a == 2 ? 'two' :
($a == 3 ? 'three' :
($a == 5 ? 'four' : 'other'))));
echo "\n";
// prints 'four'
}
exit;
?>
收益:
other
one
two
three
other
four
other
正如你所料.
表达式从左到右进行评估.所以你实际得到:
echo (
((($a == 1 ? 'one' : $a == 2)
? 'two' : $a == 3) ? 'three' :
$a == 5) ? 'four' : 'other');
所以对于$a = 2,你得到:
echo (
((($a==2) ? 'two' : $a == 3) ? 'three' :
$a == 5) ? 'four' : 'other');
接着
echo (
((true ? 'two' : $a == 3) ? 'three' :
$a == 5) ? 'four' : 'other');
接着
echo (
('two' ? 'three' : $a == 5) ? 'four' : 'other');
接着
echo (
'three' ? 'four' : 'other');
所以回声’四’.
记住,PHP是动态类型化的,并将任何非零非空值视为TRUE.