Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么“echo”的输出为真';a';:是吗';b';:';c';`';b';?_Php - Fatal编程技术网

Php 为什么“echo”的输出为真';a';:是吗';b';:';c';`';b';?

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'不要嵌套三元运算符。。。。它使您的代码不可读,并且被证

我有一些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'

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