2009-09-05 91 views
3

如果輸入「car」或「ferrari」,則應打印「car or ferrari」。我怎樣才能實現它?PHP:在Switch的情況下有兩個值?

<?php 
$car ='333'; 
switch($car) 
{ 

     case car OR ferrari: 
       print("car or ferrari"); 
       break; 
     case cat: 
       print("cat"); 
       break; 
     default: 
       print("default"); 
       break; 
} 
?> 

回答

22

使用兩項case條款:

case 'car': 
case 'ferrari': 
    print("car or ferrari"); 
    break; 

explanation

是非常重要的瞭解如何執行switch語句以避免錯誤。語句switch一行一行地執行(實際上,按語句聲明)。一開始,沒有代碼被執行。只有當發現case語句的值與switch表達式的值匹配時,PHP纔會開始執行語句。 PHP繼續執行語句,直到switch塊結束,或者第一次看到break語句。如果您在案例的聲明列表末尾沒有寫出break聲明,PHP將繼續執行以下案例的聲明。

+0

+1,並且因爲你有針對性的批評而被接受。謝謝。 – hhh 2009-09-05 16:23:02

+0

有趣的是''default:'case與其他情況一樣。它不需要在交換機的末尾。例如:http://codepad.org/jNrQdM3U – iDev247 2013-03-20 01:20:16

2
switch($car) 
{ 

     case car: 
     case ferrari: 
       print("car or ferrari"); 
       break; 
     case cat: 
       print("cat"); 
       break; 
     default: 
       print("default"); 
       break; 
} 

案例 「告吹」,直到第一break聲明。這也意味着您在default的情況下不需要break

5

你可以簡單地 「落空」 你要平等地處理案件:

<?php 
    $auto ='333'; 
    switch($auto) 
    { 

    case car: 
    case ferrari: 
      print("car or ferrari"); 
      break; 
    case kissa: 
      print("cat"); 
      break; 
    default: 
      print("default"); 
      break; 
    } 
+0

你如何迴應帥哥的批評? – hhh 2009-09-05 16:16:22

+0

對不起,我可能已經太晚了,但我找不到帥哥的批評? – 2009-09-07 06:28:44

1
switch($car) { 
case 'car': 
case 'ferrari': 
    print("car or ferrari"); 
    break; 
case 'cat': 
    print("cat"); 
    break; 
default: 
    print("default"); 
    break; 
} 

這走的是switch()語句的「落空」屬性的優勢。基本上,一個部分不會停在case處,它會停在break(或退出該函數的其他操作)。

我已經採取了應用的縮進我喜歡的開關,這使得它們最多隻能使用一個縮進級別,我認爲合適的,因爲,從邏輯上講,switch及其cases是同一結構中的所有元素的自由。因此使用switch中的兩個縮進級別不能傳達有用的信息。

1

我不」知道如果PHP支持這一點,但在C中,你可以做這樣的事情:

case car: 
case ferrari: 
      print("car or ferrari"); 
      break; 

的想法是用於處理汽車的情況下將繼續運行,直到遇到一個break語句代碼。至於風格,應該避免。

+0

+1用於開始比較 – hhh 2009-09-05 16:14:23

相關問題