【问题标题】:Issues understanding nested PHP ternary operator ? echo $a ? 'a' : $b ? 'b' : 'c'; [duplicate]理解嵌套 PHP 三元运算符的问题?回声 $a ? 'a' : $b ? 'b' : 'c'; [复制]
【发布时间】:2019-09-18 18:55:28
【问题描述】:
$a = true;
$b = false;
echo $a ? 'a' : ($b ? 'b' : 'c');
output a

我明白这一点。 如果已经阅读并在互联网上搜索过:嵌套 PHP 三元运算符 但是我还是不明白为什么会有以下输出?

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

    output b 

为什么? 有人可以将这个表达式翻译成经典的 if - else 吗?
谢谢

【问题讨论】:

  • echo ($a ? 'a' : $b) ? 'b' : 'c' 有帮助吗?
  • @ScottHunter 现在说得通了,我明白了。谢谢

标签: php ternary-operator


【解决方案1】:
echo $a ? 'a' : ($b ? 'b' : 'c');

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

所以在那个例子中,它会输出'a'。

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

这个例子说:如果 ($a ? 'a' : $b) 为真,则输出 'b' 否则输出 'c'。如果我们看一下 ($a ? 'a' : $b) 的计算结果,它会说:如果 $a 为真,则输出 'a',否则输出 'b'。

如果您查看 PHP 的 type comparison table,您可以看到字符串的计算结果为 true,除非它们为空或“0”。因此,($a ? 'a' : $b) - 'a' 的输出结果为真。因此,它输出'b'。

【讨论】:

  • 谢谢。您提到的解释与@ScottHunter 上面所说的一样 echo ($a ? 'a' : $b) ? 'b' : 'c' 。我不明白这部分“如果你看 PHP 的类型比较表,'”,我不明白你提到的表如何使用?
  • @leonidaa 如果你点击我的链接,你可以看到比较表。如果您在表中找到 $x = "",您可以看到在 boolean 下,它的计算结果为 false,但如果您找到 $x = "1",您可以看到它的计算结果为 true。
猜你喜欢
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
  • 2011-03-28
  • 2013-07-12
  • 2021-10-06
  • 1970-01-01
相关资源
最近更新 更多