PHP嵌套条件运算符错误?

时间:2009-12-17 12:27:02

标签: php conditional-operator

   
                return
                    true  ? 'a' :
                    false ? 'b' :
                                                           'c';

这应该返回'a',但它不会。它返回'b'。 PHP处理条件运算符的不同部分的顺序是否存在错误?

我从Are multiple conditional operators in this situation a good idea?得到了这个想法似乎正常工作的想法。

(当然,真实和假是出于示例的目的。在实际代码中,它们分别是评估为真和假的语句。是的,我知道这是肯定的)

4 个答案:

答案 0 :(得分:8)

  

建议您避免   “堆叠”三元表达式。 PHP的   使用多个时的行为   单一的三元运算符   陈述不明显

来自“非明显三元行为”下的PHP Manual

三元运算符从左到右进行评估,因此除非您添加大括号,否则它不会像您期望的那样运行。以下内容可行,

return (true ? "a" : (false ? "b" : "c"));

答案 1 :(得分:6)

怀疑它正在评估(true ? 'a' : false)作为第二个三元运算符的输入并将'a'解释为true。请适当地尝试包围。

答案 2 :(得分:3)

操作顺序:

>>> return true ? 'a' : false ? 'b': 'c';
'b'
>>> return true ? 'a' : (false ? 'b': 'c');
'a'

答案 3 :(得分:0)

让我以同样的方式解释它向我解释。但是你必须在括号中注意以了解正在发生的事情。

PHP

下面的PHP代码

Font

相当于:

'window

另一种语言

以下代码

true ? "a" : false ? "b" : "c"

相当于:

(true ? "a" : false) ? "b" : "c"
相关问题