[英]Ternary operator concatenation
为什么
1 == 1 ? 'green' : 1 < 0 ? 'red' : 'yellow'
在PHP中返回red
?
我来自Java和Javascript,该表达式返回green
。
简单的小提琴来显示它: https : //jsfiddle.net/yt0e8t93/
C,C ++,Java和Javascript会将其评估为
1 == 1 ? 'green' : (1 < 0 ? 'red' : 'yellow')
由于在所有这些语言中三元条件运算符的关联性是从右到左。 (这可以追溯到甚至想到if
语句之前)。
但是PHP的人希望与众不同。 在PHP中,您的表达式被评估为
(1 == 1 ? 'green' : 1 < 0) ? 'red' : 'yellow'
这简化为'green' ? 'red' : 'yellow'
'green' ? 'red' : 'yellow'
,而又将'red'
为'green'
是真实的。 如果您希望使用老式的方法,请使用上面的括号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.