2011-06-01 67 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