繁体   English   中英

了解嵌套PHP三元运算符的问题? 回声$ a? 'a':$ b? 'b':'c';

[英]Issues understanding nested PHP ternary operator ? echo $a ? 'a' : $b ? 'b' : 'c';

$a = true;
$b = false;
echo $a ? 'a' : ($b ? 'b' : 'c');
output a

我明白这一点。 如果已经在Internet上阅读并搜索了以下内容:嵌套的PHP三元运算符但是我仍然不明白为什么会有以下输出?

    $a = true;
    $b = false;
    echo $a ? 'a' : $b ? 'b' : 'c';

    output b 

为什么呢? 有人可以将其表达为经典的if吗?
谢谢

echo $a ? 'a' : ($b ? 'b' : 'c');

这段代码说:如果$ a为true,则输出'a',否则,输出以下结果:如果b为true,则输出'b',否则输出'c'

因此,在该示例中,它将输出“ a”。

echo $a ? 'a' : $b ? 'b' : 'c';

本示例说:如果($ a?'a':$ b)为true,则输出'b',否则输出'c'。 如果我们看一下($ a?'a':$ b)的计算结果,它说:如果$ a为true,则输出'a',否则输出'b'。

如果查看PHP的类型比较表 ,则可以看到字符串的值为true,除非它们为空或为'0'。 因此,因此($ a?'a':$ b)-'a'的输出结果为true。 因此,它输出“ b”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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