2013-08-28 272 views
-1

我有一个非常奇怪的语法问题。有人能告诉我这是为什么不工作:PHP逻辑运算符

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

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

,我怎么能拿第一条语句工作? 在此先感谢!

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

+0

当您使用第一个会发生什么声明?你的问题 – aynber

+3

不清楚,你想实现什么?我想你需要'&&'而不是'||' – 2013-08-28 13:27:41

+0

你想要做什么?用我们的文字写下你的逻辑。 –

回答

3

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

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

让它按照你的期望工作。

+0

谢谢你,这就是我正在寻找的! – charlenemasters

1

使用此

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

你说这个代码是不工作...

  1. if (! is_single() || ! is_archive())

...但这是:

  1. if (! is_single() || is_archive())

但这不是一个逻辑。

  1. NOT is_single() OR NOT is_archive()

  2. NOT is_single() OR is_archive()