PHP OR和AND函数有奇怪的行为[重复]

Posted

技术标签:

【中文标题】PHP OR和AND函数有奇怪的行为[重复]【英文标题】:PHP OR and AND function have strange behaviou [duplicate] 【发布时间】:2022-01-15 08:11:55 【问题描述】:
    $q = TRUE and FALSE;  // or use AND
    var_dump($q);

返回 FALSE

    $q = FALSE or TRUE;   // or use OR
    var_dump($q);

返回 FALSE

将 AND 替换为 && 和 OR 替换为 ||给出相反和正确的结果。我已经用 v5 和 v7 对此进行了测试,结果相同。 函数 AND 和 OR 和 && 和 || 有什么区别? ?

【问题讨论】:

php.net/manual/en/language.operators.logical.php 作为第一个参考点。特别看一下例子和关于优先级的注释。 注: $q = TRUE and FALSE; 返回 true,而不是 false 那很好,但它没有! 我去了一个沙盒 [link]wtools.io/php-sandbox/b8or 并输入 你确定吗?演示:3v4l.org/1KEJX 【参考方案1】:

这是因为这里有运算符的优先级。

&& 优先于 AND ||优先级高于 OR

在此处查看 PHP 运算符的文档 https://www.php.net/manual/en/language.operators.precedence.php

【讨论】:

谢谢,但在每种情况下只有一个运算符,所以我认为这不是优先级。问题从两个操作员开始,但当我发现单个操作员的问题时,我发布了。 @Iain 我认为您误解了优先级的工作原理。评估的顺序仍然可以不同。您是否阅读了我提供的文档链接中的示例?它确实向您展示了它是如何/为什么发生的。 好吧,这并不是两个不同的 AND 或 OR 之间的优先级,还有另一个运算符 =(Assignment operator) 的优先级低于 &&/||并且比 AND 或 OR 运算符具有更高的优先级,因此令人困惑的输出:) 谢谢,GSM。很抱歉早些时候解雇了 ADyson,但优先级确实解决了这个问题。 AND 和 && 之间的区别是巨大的。上周我学到了很多关于 php 的知识!案子解决了。感谢大家的帮助。【参考方案2】:

我刚刚跑了

var_dump(FALSE or TRUE);

它返回了:

 bool(true) 

我认为你做错了什么。

【讨论】:

$q = FALSE or TRUE; var_dump($q); 将返回 bool(false) var_dump(FALSE or TRUE); 返回false - 演示:3v4l.org/1KEJX 我跑了

以上是关于PHP OR和AND函数有奇怪的行为[重复]的主要内容,如果未能解决你的问题,请参考以下文章

通过 RegQueryValueEx 和 RegGetValue 获取注册表值时的奇怪行为 [重复]

bashrc 中的奇怪行为:连接,相同的代码运行/失败 [重复]

对象和 console.log 的奇怪行为 [重复]

对象和 console.log 的奇怪行为 [重复]

启用优化的g ++和clang ++的奇怪行为[重复]

嵌套的scrollview + recyclerview,奇怪的自动滚动行为[重复]