Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么(false和false或true)返回true_Php_Operators_Operator Precedence - Fatal编程技术网

Php 为什么(false和false或true)返回true

Php 为什么(false和false或true)返回true,php,operators,operator-precedence,Php,Operators,Operator Precedence,(false和false | | true)按预期返回false var_dump(false and false || true); // result: bool(false) 但是(false和false或true)返回true。我无法从逻辑上解释为什么会发生这种情况。&&和|的优先级高于和或 您可以在PHP文档中看到 所以 查看 当我们按优先级对运算符进行排序时,它是: <?php var_dump(false and false || true); // eq: false

(false和false | | true)
按预期返回false

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

但是
(false和false或true)
返回true。我无法从逻辑上解释为什么会发生这种情况。

&&
|
的优先级高于

您可以在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
这就是你问题的答案<代码>|
的优先级高于


我假设您只使用一种“类型”的逻辑运算符,使用
&&
|
。不要将它们组合起来。

即使逻辑上
|
是相同的,它们的前导也不相同

|
的优先级高于
,因此在您的两条语句中对它们的解释不同。我想如果你在周围加上一个括号,结果会是一样的:

&& > || > AND > OR


更多

我想首先要看的是手册。这里有关于感谢的明确解释。我的脑子里刚刻下这样一个字:
|
出于某种原因是等价的
&& > || > AND > OR
(false and (false || true));
(false and (false or true));