为什么(错误和错误或真实)返回true

var_dump(false and false || true);
// result: bool(false)

(false and false || true)按预期返回false。

var_dump(false and false or true);
// result: bool(true)

但是(false and false or true)返回true。 我没有合理的解释为什么会发生这种情况。


&&|| 具有更高的优先级上andor

您可以在PHP文档中看到运算符优先级

所以

<?php 
var_dump(false and false || true);
// eq: false and (true or false) => false

var_dump(false and false or true);
// eq: (false and false) or true => true

看看http://php.net/manual/en/language.operators.precedence.php

当我们按照优先级排序运营商时,它是:

&& > || > AND > OR

这是你的问题的答案。 || 具有比AND更高的优先权。

我想你只使用一个'类型'的逻辑运算符,使用&&||andor 。 不要把它们组合起来。


即使逻辑|| 和/ or相同的,他们的优先权不是。

||OR具有更高的优先级,因此它们在您的2个语句中的解释不同。 我猜如果你添加一个括号,它会有相同的结果:

(false and (false || true));

要么

(false and (false or true));

更多在这里

链接地址: http://www.djcxy.com/p/57637.html

上一篇: Why (false and false or true) returns true

下一篇: , AND and &&