繁体   English   中英

开关/外壳不起作用PHP

[英]Switch/Case not working PHP

我试图养成使用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 ..我也尝试不使用单引号,但是它仍然默认为“ Unknown” ..我在做什么错?

您需要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'];
}

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

最初,我没有将案件用引号引起来。

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

等到十二月。 这适用于除八月和九月以外的所有时间。 代码很好,(由以下解决方案证明)。

为什么只是我不知道的那两个月,但是删除前导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;
}

很奇怪,但是希望这对某人有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM