我不明白该输出(“ four”)是怎么来的?
four
$a = 2; echo $a == 1 ? 'one' : $a == 2 ? 'two' : $a == 3 ? 'three' : $a == 5 ? 'four' : 'other' ; // prints 'four'
我不明白为什么four打印“ ”。
您需要将三元条件括起来:
<?php 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
如您所愿。
请参阅PHP三元运算符帮助的“三元运算符”底部的注释。
表达式从左到右进行求值。因此,您实际上得到了:
echo ( ((($a == 1 ? 'one' : $a == 2) ? 'two' : $a == 3) ? 'three' : $a == 5) ? 'four' : 'other');
因此$a=2,您得到:
$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');
等等echo 'four'。
echo 'four'
请记住,PHP是动态类型的,并将任何非零,非空值都视为TRUE。