【发布时间】:2012-12-22 06:33:06
【问题描述】:
为什么要打印2?
echo true ? 1 : true ? 2 : 3;
据我了解,应该打印1。
为什么没有按预期工作?
【问题讨论】:
-
嵌套三元运算符从来都不是很好的理由......并且手册明确警告您这一点
-
php.net/manual/en/language.operators.comparison.php -
Note: It is recommended that you avoid "stacking" ternary expressions. PHP's behaviour when using more than one ternary operator within a single statement is non-obvious- 三元表达式是左关联的。 -
如果你必须嵌套你的三元运算符,那么在它们周围使用括号。事实上,我还是建议在三元组周围使用方括号;即使您没有嵌套它们,它也会使它们更具可读性。
标签: php ternary-operator