为什么(错误和错误或真实)返回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。 我没有合理的解释为什么会发生这种情况。
&&
和||
具有更高的优先级上and
和or
您可以在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
更高的优先权。
我想你只使用一个'类型'的逻辑运算符,使用&&
和||
或and
和or
。 不要把它们组合起来。
即使逻辑||
和/ 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 &&