为什么
1 == 1 ? 'green' : 1 < 0 ? 'red' : 'yellow'
在PHP中返回red
?
我来自Java和Javascript,此表达式返回green
。
答案 0 :(得分:3)
C,C ++,Java和Javascript会将其评估为
1 == 1 ? 'green' : (1 < 0 ? 'red' : 'yellow')
由于三元条件运算符的关联性在所有这些语言中从右到左。 (这可以追溯到甚至构思if
陈述之前。
但PHP家伙想要与众不同。在PHP中,表达式被评估为
(1 == 1 ? 'green' : 1 < 0) ? 'red' : 'yellow'
这简化为'green' ? 'red' : 'yellow'
,而'red'
则'green'
简化为{{1}}。如果你想要它以老式的方式,那么使用上面的括号。