2013-08-28 518 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()