2012-11-08 69 views
2

可能重複:
How to use a switch case ‘or’ in PHP?正確的PHP switch語句中使用

我想用交換機做一個測試,這是我寫的代碼:

<?php 

    $moisActuelle = date("n"); 
    switch($moisActuelle) 
    { 
     case 1 || 2 || 3 : 
      echo'L\'hiver'; 
      break; 
     case 4 || 5 || 6 : 
      echo'Le printemp'; 
      break; 
     case 7 || 8 || 9 : 
      echo'L\'été'; 
      break; 
     case 10 || 11 || 2 : 
      echo'L\'automne'; 
      break; 

    } 

?> 

但無論$ moisActuelle是什麼,此代碼總是執行第一種情況。

+1

看到這個問題:http://stackoverflow.com/questions/207002/how-to-use-a-switch-case-or-in-php – krx

回答

4
switch($moisActuelle) 
{ 
    case 1: 
    case 2: 
    case 3: 
     echo'L\'hiver'; 
     break; 
} 

switch語句將尋找第一個真正的情況和該語句後會繼續執行所有操作,直到找到breakdefault

+1

或者直到它找到「繼續」聲明。只是要徹底。 – Udan

2

我不知道,如果你能做到這樣,但這裏的一個辦法:

<?php 

    $moisActuelle = date("n"); 
    switch($moisActuelle) 
    { 
     case 1: 
     case 2: 
     case 3: 
      echo'L\'hiver'; 
      break; 
     // etc 
    } 

?> 
0

我喜歡用這樣的方式:

<?php 
    $decisionTable = array(
     '1' => 'L\'hiver', 
     '2' => 'L\'hiver', 
     '3' => 'L\'hiver', 

     '4' => 'Le printemp', 
     '5' => 'Le printemp', 
     '6' => 'Le printemp', 

     '7' => 'L\'été', 
     '8' => 'L\'été', 
     '9' => 'L\'été', 

     '10' => 'L\'automne', 
     '11' => 'L\'automne', 
     '12' => 'L\'automne', 
    ); 

    $moisActuelle = date("n"); 
    echo $decisionTable[$moisActuelle]; 
?> 

或者,如果你想使用swicth

<?php 

    $moisActuelle = date("n"); 
    switch(true) 
    { 
     case in_array($moisActuelle, array(1, 2, 3)): 
      echo'L\'hiver'; 
      break; 
     case in_array($moisActuelle, array(4, 5, 6)): 
      echo'Le printemp'; 
      break; 
     case in_array($moisActuelle, array(7, 8, 9)): 
      echo'L\'été'; 
      break; 
     case in_array($moisActuelle, array(10, 11, 12)): 
      echo'L\'automne'; 
      break; 
    } 

?>