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

为什么两个例字都是从第二个CASE开始执行,请大神给详细分析下!!

我看的分析对不,


<?php
//A例子
$num = 2;
$sum  = 10;
switch($sum){     //这里的$sum 值是上面付给的10么?
    case 1:
        $sum = $sum  + 10;   //这里为什么没有执行?
    break;        
    case 2:
        $sum = $sum  + 10;  //这里和上面一样么?如果一样为什么上面的为什么不有执行,而从这开始。    break;
     case 3:
        $sum = $sum  + 10;
    break;    
    default:
        $sum = $sum  + 10;
}
 echo "A例子的值是:".$sum."<br />";
//B例子
$num = 2;
$sum  = 10;
switch($num){
    case 1:
        $sum = $sum  + 10;
    case 2:
        $sum = $sum  + 10;
    case 3:
        $sum = $sum  + 10;
    default:
        $sum = $sum  + 10;
}
 echo "B例子的值是:".$sum."<br />";
?>

提问者:画眉 2015-03-14 10:18

个回答

  • 姬建
    2015-04-10 12:06:37

    刚开始我也没搞懂,看了前面一章和下面朋友们的解答才明白:switch(//这个括号里要输入的是条件),他和后面的case()括号里面的是要对应 的,相当于总和分支或者说大哥和小弟,大哥说啥,小弟听啥,大哥说switch($num),因为上面说$num=2,所以switch($num)也就 是switch(2),下面的分支条件case()括号里就要找对应的2,所以从case(2)条件下执行,如果有break这一个障碍,就停下直接输出 结果,如果没有,就一直执行到底,或者执行到有break出现的那一条件下。。说的够生动形象具体吧。哈哈哈

  • AnthonyYY
    2015-03-22 12:16:26

    A例子里switch括号里的是$num吧,不是$sum,case1不执行是因为$num != 1,case1的完整意思就是case($num=1),当循环到case2的时候条件成立了才开始执行,但是此后若没有break;其他的表达式也会被执行,即使条件不成立;

  • 慕九州9358023
    2015-03-20 15:49:27

    同问啊,我也不理解