2014-10-06 149 views
0

我有一個條件語句在PHP中,當我添加一個OR邏輯運算符它不能按預期工作,在下面的例子中,它返回我試圖阻止的代碼它在做。多個條件PHP與OR邏輯運算符不返回false

單獨的每個陳述只適用於當他們在一起,因爲我有他們下面。重複每個條件的代碼似乎效率低下。

if (!is_sp_post_type('profile') || !is_category(array('previews','reviews')) || !is_single(array('previews','reviews'))) { //do stuff };

我看了這個答案Is there a short-circuit OR in PHP that returns the left-most value?,但我仍然停留

+0

你實際期望什麼邏輯?如果主要測試中的任何一個失敗,你想「做些什麼」?我的意思是,如果它不是type => profile OR not category =>評論OR not single =>評論? – fast 2014-10-06 11:44:40

+0

我想做的東西只要它不符合任何一個主要條件。 – stemie 2014-10-06 14:06:00

回答

1

只是利用AND&&)運算符。

OR運算符只需要一個true來執行條件,而AND運算符需要所有語句都爲true。

我不能百分百確定你想什麼來實現的,但我也建議有一個重新審視一下你的NOT!)運營商和它是如何在你的代碼中使用

+0

你是否認爲OP的邏輯錯誤?最好要求澄清。 – fast 2014-10-06 11:45:59

+0

你真的知道操作員是如何工作的嗎?由於您的指責,我不會假設您因爲指責我並且低估了我的答案,所以這純粹是一個合乎邏輯的問題。我不需要對此做任何澄清。這不是我的第一個關於這樣的主題的問題 – 2014-10-06 11:52:16

+0

你自己說,你不確定.. OP談到「爲每個條件重複代碼效率低下」,所以它看起來他實際上需要OR語義。但誰知道(所以我問)。 – fast 2014-10-06 11:56:40

1

我被傻,應該使用&&

if (!is_sp_post_type('profile') && !in_category(array('previews','reviews')) && !is_single(array('previews','reviews'))) { //do stuff }

感謝一直到Pieter Goosen指出這一點 - 他刪除他的回答雖然讓我無法選擇它。

+0

非常適合張貼並給我一些信用。讚賞。+1 – 2014-10-06 15:12:25

+0

當然,我已經接受你的答案和+1。Dankie :) – stemie 2014-10-06 15:14:09

+0

Plesier ou maat :-) – 2014-10-06 15:15:11