2013-10-02 66 views
2

有沒有更簡單的方式來寫這個?PHP if語句具有多個值

<? 
if($_GET['id']==1 || 
$_GET['id']==3 || 
$_GET['id']==4 || 
$_GET['id']==5) 
{echo 'does it really have to be this explicit?'}; 
?> 

也許這樣的事情?

<? 
if($_GET['id']==1 || 3 || 4 || 5){echo 'this is much shorter'}; 
?> 

回答

21

只是嘗試:

if (in_array($_GET['id'], array(1, 3, 4, 5))) {} 
+0

這是我知道的最短途徑。另外它更容易閱讀。 – Mike

1

或許開關可以幫助

switch($_GET['id']) { 
    case 1: 
    case 3: 
    case 4: 
    case 5: 
     echo 'Slect maybe :P'; 
     break; 
} 
+0

開關更具可讀性+1 – tetri

+0

我不知道一個函數'select()' - 你能指向我的php.net手冊嗎?誰來投票呢? – djot

+0

這是一個錯誤。我已經編輯它來「切換」 – 2013-10-02 14:38:04

0

聲明數組:

$values = array(1,3,4,5); 

讓你變

$id = $_GET['id']; 

現在使用PHP in_array();

if(in_array($id, $values)){ 
//do something 
} 

閱讀in_array()

1

也許不是較短,但更易讀。嘗試in_array()函數:

if (in_array($_GET['id'], array(1, 3, 4, 5))) 
{ 
    echo "What about this?"; 
} 
1

您可以使用正則表達式象下面這樣:

preg_match(['1-4']);