问答详情
源自:6-6 PHP条件结构之switch…case…中的break

在例子B里面,为什么值是40而不是30?

执行第三个case的时候,$num = 2而case 3, 为什么还是+10了?

我试着把第三个case改成 case 2, $sum 还是40。

提问者:慕粉152849807 2017-01-09 00:39

个回答

  • 抗锄头看日出
    2017-06-10 10:48:51

    顺序执行所以把3和2更换之后结果是不一样的一个是30一个是40  并不是你改过之后先执行2在执行3在执行default而是执行2之后直接执行default结果是30不是40

  • Vzeo丶
    2017-01-30 16:44:10

    你的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。共勉,加油。 

  • 慕粉1469228269
    2017-01-15 13:55:01

    结合第一个回答与自己的尝试,正如一答所说,case只是分区,不同case的语句其实是相连的(如果没有break隔开的话 ) 。case 1 2 3 ,不加break,改变三者的顺序,若case2 在第一个 则 $sum ==  50; 若case 2在第三位 ,则$sum == 30 诸位同学可自行尝试

  • _奇诺
    2017-01-09 10:32:42

    switch的机制大概是这样的,你可以这么理解,case相当于一个个传送点,然后根据你的参数,比如num==2,就传送到往下最近的case 2,找不到的话就执行最下面的default,所以break是要加的,相当于退出点,case你可以理解成只有单向传送的作用,并不支持退出,或作为各块之间的分隔;

    所以改第三个case为case2时$sum还是40,如果你把第一个case改成case 2,$sum就会变成40;

    //同是正在入门php,有错望网友指正;