温馨提示:本文翻译自stackoverflow.com,查看原文请点击:php - How does the 'Ternary Operator' i.e. the 'conditional operator' work with the 'echo' statement since
php echo return-value ternary-operator conditional-operator

php - 自“三元运算符”(即“条件运算符”)如何与“ echo”语句一起使用

发布于 2020-03-27 11:24:19

我在运行Windows 10家庭单一语言64位操作系统的笔记本电脑上使用PHP 7.3.6

我已经在笔记本电脑上安装了最新版本的XAMPP安装程序,该安装程序已经安装了Apache / 2.4.39(Win64)PHP 7.3.6。

今天,我遇到了PHP手册中的以下代码示例

<?php
  echo $some_var ? 'true': 'false'; // changing the statement around
?>

据我所知,并根据PHP手册中的以下文本

表达式(expr1)?(expr2):(expr3)如果expr1计算为TRUE则计算为expr2 ,如果expr1计算结果为FALSE则按expr3计算

众所周知echo,PHP语句不返回任何值。

因此,在上述代码示例中,echostatement 必须不返回任何值。

所以,我的问题是,该echo语句从不返回任何值,三元运算符如何得知expr1(i.e. the statement echo $some_var)已被评估为true或false,并因此将输出打印为trueor false

查看更多

查看更多

提问者
PHPGeek
被浏览
283
treyBake 2019-07-03 22:46

您错误地阅读了逻辑。这就是为什么我喜欢三元声明的括号。您的三元与:

if ($some_var) {
    echo 'true';
} else {
    echo 'false';
}

条件中未使用回声。如果将三元数更改为此,则情况会更清楚:

echo ($some_var ? 'true' : 'false');

这可以看作是echo (if ($some_var) {true} else {false})(至少从逻辑的角度来看)

因此,测试的不是回声,而是?-条件语句之前,而不是-echo