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

案例B为什么会继续执行下去

B中num=2执行case2,为什么会执行后面的。num又没有累加上去 条件不成立啊

提问者:我不是林俊杰 2016-01-26 11:29

个回答

  • weibo_大雄找不到时光机咯_03199167
    2016-05-12 15:02:45

    在B例子中,执行了第二个case , $sum变为20,由于没有break,继续执行第三个case,然后又执行default,$sum变为了40。进了循环后,没有跳出来的关键字,它就会自动走完这个循环再出来。

  • 小感冒
    2016-02-20 12:17:10

    break的作用是阻止进行,题主已经知道了。

    之所以执行完case2后,还会执行case3,是因为他是按顺序依次进行运算的,

    在没有break的情况下,只要在某一个位置满足了条件,这个位置以下的条件都会无效,不管条件对不对,都会运算下去。

    $num = 2;
    $sum  = 10; 
    switch($num){
    	case 1:
    		$sum = $sum  + 10;//不满足条件,跳过此次运算。
    	case 2:
    		$sum = $sum  + 10;//在此处case 2满足了条件,下面的运算都会进行,不管条件对不对。
    	case 3:
    		$sum = $sum  + 10;//因前面case 2的时候已经满足了条件,符合了判断,故此处依然执行
    	default:
    		$sum = $sum  + 10;//到default结束运算。
    }

    理清了上面顺序和原因之后,

    再来看下,输出结果是40,这个40是怎来的?

    初始变量$sum = 10;

    在case 2:的时候 $sum = $sum +10; 

    这时$sum=20,因为没有了break,故将此结果带入继续进行下面运算;

    在case 3:$sum = $sum +10;

    此时$sum=20+10 =30;

    在default:$sum = $sum+10; //即$sum = 30 +10;

    故结果为40



  • Funtree9
    2016-01-26 15:54:30

    需要在每个case最后加入break;已停止向下执行。如果不加break,在满足条件的case后面的程序都会执行。

  • qq_淡淡的回忆_0
    2016-01-26 15:52:54

    因为B中的switch语句中没有加break,他会从头到尾一个一个的输出