PHP : false OR false OR true == false?[复制]

PHP : false OR false OR true == false? [duplicate]

提问人:Lomchat 提问时间:7/16/2023 最后编辑:Lomchat 更新时间:7/17/2023 访问量:48

问:

这个问题在这里已经有答案了:
4个月前关闭。

这篇文章在 4 个月前被编辑并提交审核,未能重新打开帖子:

原始关闭原因未解决

我不明白PHP中发生了什么。 我花了几个小时,直到我明白它不能正常工作,或者我不明白什么。

这里有几行:

$test = false OR false OR true;
echo $test;

这里$test是错误的,什么都没有打印。 另外,如果我尝试:

$test = false OR false OR true;
if($test){
    echo "IT'S TRUE";
}

不打印任何内容。

但是在这里:

if(false OR false OR true){
    echo "IT'S TRUE";
}

打印“IT'S TRUE”。

因此,语句“false OR false OR true”在赋值给变量时为 false,但在为条件时为 true。 有谁知道并能向我解释为什么?

编辑:答案是:

$test = false OR false OR true;

被解析为

($test = false) OR false OR true;

所以我需要写:

$test = (false OR false OR true);

这是工作。 谢谢大家!

php 变量 运算符优先级 boolean-logic

评论

1赞 cyberbrain 7/16/2023
虽然看起来不像,但这个问题和你的问题差不多: 'AND' 与 '&&' 作为运算符 它被称为“运算符优先级”并解释哪些运算符更多地“绑定”到它们的操作数。并绑定超过 或 .=andor

答:

3赞 Gugu72 7/16/2023 #1
$test = false OR false OR true;

实际上解析为:

($test = false) OR false OR true;

因此,为什么评估到您的病情。$testfalse

详情请看这里:https://www.php.net/manual/en/language.operators.logical.php

评论

0赞 Casimir et Hippolyte 7/16/2023
另外: php.net/manual/en/language.operators.precedence.php
1赞 Lomchat 7/16/2023
好的,非常感谢!就是这么简单...