为什么(错误和错误或真实)返回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 &&
