2010-10-19 85 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 
} 
相關問題