2010-10-08 60 views
-1

任何想法爲什麼這不起作用?在IF中使用OR

if($page->Slug != 'water-filters' || $page->Slug != 'pet-care' || $page->Slug != 'books') { 
    //do something 
} 
+2

定義*這不是工作*請。爲我完美工作:http://codepad.org/9tvMPsH7你必須告訴你**想要發生什麼**。 – 2010-10-08 07:57:19

+1

什麼是$ page-> Slug和實際發生了什麼?如果我在||之後刪除所有內容,則爲 – fabrik 2010-10-08 07:57:23

+0

它工作,即只有一張支票。如果我使用OR,它不會工作... – Andy 2010-10-08 07:57:57

回答

10

我認爲你的意思是AND而不是OR beca使用你使用不等於。

通過使用不等於你的方式聲明將永遠是真實的,如果$ page-> Slug等於'水過濾器'它不等於'pet-care',因此if語句作爲一個整體返回true。

if($page->Slug != 'water-filters' && $page->Slug != 'pet-care' && $page->Slug != 'books') 
{ 
    //do something 
} 
+0

固定!感謝隊友,把它弄錯了。這是在我的腦海:) – Andy 2010-10-08 08:01:51

0

$頁面級>彈頭或者是 '水過濾器' 或 '寵物護理' 或 '書'

+0

正確的隊友... – Andy 2010-10-08 07:59:55

0

嘗試

== or == or == 

!= and != and != 

: -D

+0

謝謝,就是這樣:) – Andy 2010-10-08 08:04:00

+0

!(==或==或==):) – 2010-10-08 08:23:56

0

如果彈頭是不是「水過濾器」或不是「寵物護理」或不是「書」 ......

好吧,如果這是其中的一個,或任何其他價值,它的定義不是其他兩個(或不是全部三個)。所以這種情況總是如此。

1

我猜「做某事」總是得到執行?

if($page->Slug != 'water-filters' || $page->Slug != 'pet-care' || $page->Slug != 'books') 
{ 
    //do something 
} 

對於$ PAGE->彈頭的任何值,它總是會不等於這些三個條件之一,因此至少一個(在技術上,至少兩個)的發言將永遠爲真。因爲只要三個陳述中的一個是真的,你就使用'OR',整個事情就會成真。

因此,這基本上等於在說

if (true) { 
    //do something 
} 
0

除了什麼其他的上面已經說過,這是正確的也是,試試這個語法的可讀性。

if(!in_array($page->Slug, array('water-filters', 'pet-care', 'books')) { 
    // Do something 
} 
+0

感謝這是一個很好的方式做到這一點。 – Andy 2010-10-29 21:52:54