繁体   English   中英

三元运算符串联

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM