开发者社区> 问答> 正文

switch语句中省略break后为什么会执行不满足的case条件后的语句?

$a=5;
switch($a){
  case 6:
    echo "\$a is 6<br/>";
  case 5:
    echo "\$a is 5<br/>";
  case 4:
    echo "\$a is 4<br/>";
}

如上例中,我的理解是每次$a跟case后的值比对,符合的话就输出语句,不符合则比对下一个case条件。但是浏览器的输出是
`$a is 5
$a is 4`
我不太明白最后一个case语句中明明$a!=4还会输出。
(我之前对switch语句必须加上break的理解是:这样可以在找到符合条件的case后立即跳出switch从而加快执行速度。现在看来不是的。)

展开
收起
落地花开啦 2016-06-16 10:54:15 3552 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    你可以这样理解,switch会根据条件,跳转到第一个匹配的 case 处继续执行。
    case 只是一个供switch 跳转的标记,并没有划分区块的作用。

    所以:

    即使有多个case与switch匹配,也只会跳转到第一个匹配的case.
    如果不break, 会从匹配的第一个case开始,一直执行到整个switch结构结束.

    2019-07-17 19:40:31
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载