三元运算符连接

时间:2017-01-13 16:07:46

标签: php

为什么

1 == 1 ? 'green' : 1 < 0 ? 'red' : 'yellow'

在PHP中返回red

我来自Java和Javascript,此表达式返回green

简单地摆弄它:https://jsfiddle.net/yt0e8t93/

1 个答案:

答案 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}}。如果你想要它以老式的方式,那么使用上面的括号。