2010-10-19 84 views
1

可能重复:
PHP make if shorter

我有一个if声明看起来像这样:

if($variable == "one" || $variable == "two" || $variable == "three" || $variable == "four"){ 
    // do something 
} 
else { 
    // do something else 
} 

问题是,它变得相当沉重..它将是大约20或30个不同的选项。

无论如何,我可以用少代码做到这一点? EG:

if($variable == ("one" || "two" || "three" || "four" || "five"))..

回答

5
switch ($variable) { 
case "one": 
case "two": 
case "three": 
case "four": 
    // do something 
    break; 
default: 
    // do something else 
} 

OR

$testSeries = array("one","two","three","four"); 
if (in_array($variable,$testSeries)) { 
    // do something 
} 
else { 
    // do something else 
} 
+0

啊,第一个选项工作! :p没有尝试。我确实想过使用switch语句,但不想为每个'case'复制代码。 :) 谢谢。 – 2010-10-19 09:11:29

+1

@Thomas:Mark的switch语句可以工作,因为除了最后一种情况外,'break'语句都被省略了,所以代码会一直拖到最后一种情况并执行它的代码,直到它最终遇到'break'在那之下的声明。 – BoltClock 2010-10-19 09:14:05

+0

啊我看到了...那真是太棒了:) – 2010-10-19 16:09:00

4

想到的最简单的事情是为你创建一个这样的数组:

$options = array("one" , "two" , "three" , "four" , "five"); 
if(in_array($variable , $options)){ 

}else{ 

} 
0
switch ($i) { 
case "one": 
case "two": 
case "three": 
. 
. 
. 
//Code here 
break; 
} 
0
if (preg_match('/^(one|two|three|four|five)$/', $var)) { 
    // Do stuff 
} 
相关问题