交换机/案例不能正常运行PHP

时间:2014-04-23 20:49:27

标签: php switch-statement

我试图养成使用switch / case而不是if的习惯。我有以下几点:

                        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 ..我试过没有单引号,但它仍默认为“未知”..我做错了什么?

2 个答案:

答案 0 :(得分:10)

您需要break中的switch,否则它将始终点击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'];
}

答案 1 :(得分: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;
}

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