php switch遇到的神坑

switch坑代码如下: (以下switch会输出什么结果?)

$num = 0;

switch ($num) {
    case $num < 12 :
        echo 1;die;
        break;
    case ($num >= 12 && $num < 15):
        echo 2;die;
        break;
    case ($num >= 15 && $num < 20):
        echo 3;die;
        break;
    case ($num >= 20 && $num < 25):
        echo 4;die;
        break;
    case $num >= 25 :
        echo 5;die;
        break;
    default:
        echo 6;die;
        break;
}

乍一看 应该是进入第一个case 其实不然 switch 匹配的是case中表达式的值 不能把case当if用
这里第一行case ($num < 12)
0 < 12 这个条件表达式 的值为 true switch($key) 中传过来的是 0

0和true 匹配 当然匹配不上

下面几行都是false

第二行 0 和false就搞上了(switch非严格匹配,自动转换类型) 所以当然是第二个case.

所以最后的结果应该是: 2
 

发布了76 篇原创文章 · 获赞 112 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq175023117/article/details/89959024
今日推荐