【问题标题】:PHP OR and AND function have strange behaviou [duplicate]PHP OR和AND函数有奇怪的行为[重复]
【发布时间】: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 logic operators


【解决方案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
  • 我跑了
猜你喜欢
  • 2016-01-26
  • 1970-01-01
  • 2019-09-17
  • 1970-01-01
  • 2021-02-21
  • 2015-10-24
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
相关资源
最近更新 更多