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