执行第三个case的时候,$num = 2而case 3, 为什么还是+10了?
我试着把第三个case改成 case 2, $sum 还是40。
顺序执行所以把3和2更换之后结果是不一样的一个是30一个是40 并不是你改过之后先执行2在执行3在执行default而是执行2之后直接执行default结果是30不是40
你的switch($num) 里面选中的元素是$num 所以就判定$num的值。因为你前面的$num = 2; 所以直接从case 2 :开始计算,不是从case 1 : 开始计算。所以就是$sum=$sum(10) + 10;然后case 3 : $sum = $sum(20) + 10;然后default : $sum = $sum(30) + 10;输出的是最后的一个$sum按照上面的规律,这个时候$sum已经等于40了,所以输出的数据就为40。共勉,加油。
结合第一个回答与自己的尝试,正如一答所说,case只是分区,不同case的语句其实是相连的(如果没有break隔开的话 ) 。case 1 2 3 ,不加break,改变三者的顺序,若case2 在第一个 则 $sum == 50; 若case 2在第三位 ,则$sum == 30 诸位同学可自行尝试
switch的机制大概是这样的,你可以这么理解,case相当于一个个传送点,然后根据你的参数,比如num==2,就传送到往下最近的case 2,找不到的话就执行最下面的default,所以break是要加的,相当于退出点,case你可以理解成只有单向传送的作用,并不支持退出,或作为各块之间的分隔;
所以改第三个case为case2时$sum还是40,如果你把第一个case改成case 2,$sum就会变成40;
//同是正在入门php,有错望网友指正;