Php 为什么“echo”的输出为真';a';:是吗';b';:';c';`';b';?
我有一些PHP代码:Php 为什么“echo”的输出为真';a';:是吗';b';:';c';`';b';?,php,Php,我有一些PHP代码: echo true ? 'a' : true ? 'b' : 'c'; 其输出为: b 但我预期的结果是: a php中的三元运算符是左关联的 你需要使用 echo true ? 'a' : (true ? 'b' : 'c'); 因为您的代码的计算结果如下: echo (true ? 'a' : true) ? 'b' : 'c'; 它相当于: echo (true) ? 'b' : 'c'; 然后结果是'b'不要嵌套三元运算符。。。。它使您的代码不可读,并且被证
echo true ? 'a' : true ? 'b' : 'c';
其输出为:
b
但我预期的结果是:
a
php中的三元运算符是左关联的 你需要使用
echo true ? 'a' : (true ? 'b' : 'c');
因为您的代码的计算结果如下:
echo (true ? 'a' : true) ? 'b' : 'c';
它相当于:
echo (true) ? 'b' : 'c';
然后结果是
'b'
不要嵌套三元运算符。。。。它使您的代码不可读,并且被证明是一种不好的做法,因为逻辑没有按照预期执行(true?'a':(true?'b':'c')@MarkBaker:这只是因为php中的条件运算符是右关联的。其他语言都是正常的,输出也和预期的一样。@Femaref-它仍然是有文档记录的行为,仍然比嵌套的更难阅读ifs@MarkBaker这是非常主观的。我个人认为,如果条件和结果很短,三元?:比嵌套ifs更容易阅读。