PHP逻辑运算符

时间:2013-08-28 13:25:41

标签: php logical-operators

我有一个非常奇怪的语法问题。有人可以告诉我为什么这不起作用:

if ( ! is_single() || ! is_archive() )

但这是: if ( ! is_single() || is_archive() )

以及如何让第一个声明发挥作用? 提前谢谢!

编辑:答案来的时候我还在编辑问题。无论如何,我应该提到我的意思是语法。我知道这两个陈述的逻辑是不一样的。所以!必须放在外面。谢谢你们。

3 个答案:

答案 0 :(得分:3)

!(否定)运算符在PHP中具有更高的precedence。这就是为什么你需要将第二个表达式括在括号中的原因:

if ( ! (is_single() || is_archive()) )

让它像你期待的那样工作。

答案 1 :(得分:1)

使用此

if (!(is_single() || is_archive()))

答案 2 :(得分:0)

你说这段代码不起作用......

  1. if ( ! is_single() || ! is_archive() )
  2. ......但这是:

    1. if ( ! is_single() || is_archive() )
    2. 但这不是同一个逻辑。

      1. NOT is_single() NOT is_archive()

      2. NOT is_single() is_archive()