为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

正在回答

4 回答

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

1 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~

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

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

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




1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信