2

我正在使用逻辑运算符来测试变量,但AND &运算符工作正常,但OR | 并且非此即彼^总是正确的。
为什么?

$a = 6;
$b = 6;

if ($a OR $b == 3) {
    echo 'true <br />';
}
else {
    echo 'false <br />';
}
4

4 回答 4

4

问题在于您的语法。

您需要单独查看表达式。

if($a) OR if($b == 3)

是你在做什么。

你想要的是:

if($a == 3 || $b == 3)

如果你自己看$a,除了 0 之外的任何值都将返回true整个方程true,这要归功于OR

于 2013-06-28T12:00:42.277 回答
3

因为您必须对布尔结果进行 OR 运算——您阅读它的方式太像英语了。

if ($a == 3 || $b == 3)

而不是

if ($a OR $b == 3)
于 2013-06-28T12:00:14.477 回答
3

这是一个优先级问题 - 请参阅http://php.net/manual/en/language.operators.precedence.php了解更多详细信息。

其他两个答案都为您提供了所需的代码。

于 2013-06-28T12:02:29.627 回答
2
$a = true
$b = true
if($a and $b)   TRUE if both $a and $b are TRUE.

参考: http: //php.net/manual/en/language.operators.logical.php

于 2013-06-28T12:03:05.983 回答