我在运行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语句不返回任何值。
因此,在上述代码示例中,echo
statement 也必须不返回任何值。
所以,我的问题是,该echo
语句从不返回任何值,三元运算符如何得知expr1(i.e. the statement echo $some_var)
已被评估为true或false,并因此将输出打印为true
or false
?
您错误地阅读了逻辑。这就是为什么我喜欢三元声明的括号。您的三元与:
if ($some_var) {
echo 'true';
} else {
echo 'false';
}
条件中未使用回声。如果将三元数更改为此,则情况会更清楚:
echo ($some_var ? 'true' : 'false');
这可以看作是echo (if ($some_var) {true} else {false})
(至少从逻辑的角度来看)
因此,测试的不是回声,而是?
-条件语句之前,而不是-echo