2014-04-23 51 views
0

我正在尝试使用开关/外壳代替if的习惯。我有以下珍闻:开关/外壳不能正常工作PHP

     switch($res['perm']){ 
          case '0': $perm = "Invalid"; 
          case '1': $perm = "Operator"; 
          case '2': $perm = "Team Lead"; 
          case '3': $perm = "Admin"; 
          default: $perm = "Unknown - ".$res['perm']; 
         } 

哪里$res['perm'] = (int) 3 ..我想没有单引号为好,但它仍然默认为“未知”。什么我做错了?

回答

10

你需要breakswitch或者它会一直打到default

switch($res['perm']){ 
    case '0': $perm = "Invalid"; break; 
    case '1': $perm = "Operator"; break; 
    case '2': $perm = "Team Lead"; break; 
    case '3': $perm = "Admin"; break; 
    default: $perm = "Unknown - ".$res['perm']; 
} 
+0

当然,我很傻。将在13分钟内接受。 –

0

AbraCadaver的回答解决我的问题,但我想我会分享的问题和情况的解决方案是使用的人其他。

最初,我没有用引号括起我的案子。

switch ($month) { 
case 01: 
    echo "January"; 
    break; 

等下降到12月。除8月和9月以外,这一切都可以工作。代码很好,(通过以下解决方案证明)。

为什么只是那两个月我不知道,但删除领先的0解决了问题,就像添加引号到案件一样,这正是我所追求的。所以:

switch ($month) { 
case '01': 
    echo "January"; 
    break; 
case '02': 
    echo "February"; 
    break; 
case '03': 
    echo "March"; 
    break; 
case '04': 
    echo "April"; 
    break; 
case '05': 
    echo "May"; 
    break; 
case '06': 
    echo "June"; 
    break; 
case '07': 
    echo "July"; 
    break; 
case '08': 
    echo "August"; 
    break; 
case '09': 
    echo "September"; 
    break; 
case '10': 
    echo "October"; 
    break; 
case '11': 
    echo "November"; 
    break; 
case '12': 
    echo "December"; 
    break; 
} 

很奇怪,但希望这有助于某人。