关于为什么switch case语句不加break会继续执行不满足条件语句的坑与解释

2017-6-21 chuang_no1

遇到一个有点莫名的问题,看下代码:


<?php
$a = 0;
switch($a){
  case 0:
    $b='张三';
  case 1:
    $c='李四';
}
echo $b;
echo $c;

//执行结果为张三李四
?>


是不是很奇怪?明明$a=0时并不满足case 1,为什么会执行$c=1?

实际上,switch case语句的原理是:跳转到第一个满足case XX的条件,并执行剩余的语句(无论条件是否满足),直到执行完毕或遇到break/exit/die()/return等中断语句结束。

所以上面例子中,如果$a=1,则执行结果会是李四。如果希望执行到满足条件后不再执行,可以添加break;


<?php
$a = 0;
switch($a){
  case 0:
    $b='张三';
    break;
  case 1:
    $c='李四';
    break;
}
echo $b;
echo $c;

//执行结果为张三
?>


发表评论:

Powered by emlog