2011-06-01 66 views
2

我有30個站點,我需要在其中24個回顯內容。我怎樣才能排除其他人?此代碼不能正常工作,因爲我認爲它的邏輯是假:)在if子句中排除多個值

$currentsite = get_bloginfo('wpurl'); // Here i get the curent site. 

如果當前網站匹配任何低於6時,如果條款不應該運行。

if ($currentsite != 'site 1' || 

$currentsite != 'site1' || 

$currentsite != 'site2'|| 

$currentsite != 'site3' || 

$currentsite != 'site4' || 

$currentsite != 'site5') { 

do something 
} 

回答

4

你可以把你的網址-S在字符串數組:

$linksArray = array(); 
$linksArray[] = 'site1'; 
$linksArray[] = 'site2'; 
$linksArray[] = 'site3'; 
$linksArray[] = 'site4'; 
$linksArray[] = 'site5'; 
$linksArray[] = 'site6'; 

之後,你可以這樣使用in_array()函數:

if (!in_array($currentsite, $linksArray) { 
    // echo your something 
} 

所以如果當前網址不在包含排除網址的數組中,它會回顯您的文本。

+0

我是一個新手,我怎麼能把網址放在數組中?:) – webmasters 2011-06-01 07:34:22

+0

在答案中添加。 – 2011-06-01 07:35:51

+0

@edem +1。我總是這樣做。但這是最有效的方法嗎?有沒有辦法通過重新編碼代碼來避免這種情況? – 2011-06-01 07:39:49

4

在你上面的例子,你需要用& & s到更換|| S:

if ($current_site != 'site1' && $current_site != 'site2' ...) 

更簡單的方法是創建要排除的點陣列,並否定了in_array檢查:

$excluded_sites = array ('site1','site2','site3'); 

if (!in_array($current_site, $excluded_sites)) { 
    do something... 
} 
+1

我personnaly喜歡只寫像 '如果(!in_array($ var,array('elem1','elem2','elem3'))){' 包含一切在一行.. btw,你在條件子句中忘記了右括號:) – ashein 2011-06-01 07:38:50

+0

@ ashein - classic;當你需要時,語法高亮的地方在哪裏? =) – 2011-06-01 07:49:44