这篇文章主要介绍了在switch语句当中因为未写break语句所出现的称为case穿透的一种现象;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | switch语句的正常格式: switch(表达式) { case 值1: 语句1: break; case 值2: 语句2: break; ... default: 语句n+1: break; } |
1 2 | 执行流程:首先用switch后面的表达式的值和case后面的值进行比较,若和值1相等则执行语句1,不相等就与case2 值进行比较,若相等则执行语句2, 以此类推,如果到default之前没有相等的情况则执行default中的语句结束. |
以下是正常情况下的代码格式;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php function switchTest(){ $a = 1; switch($a){ case 9: echo 9; break; case 1: echo 1; break; case 8: echo 8; break; default: echo '错误'; } } switchTest(); 这种情况下的输出结果是:1 |
以下的代码格式出现了所谓的case穿透的现象;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php function switchTest(){ $a = 1; switch($a){ case 9: echo 9; break; case 1: echo 1; // break; case 8: echo 8; // break; default: echo '错误'; } } switchTest(); 这种情况下的输出结果是:18错误 |
1 2 3 4 5 6 7 | 这种现象称为case穿透,产生这种现象的原因是:由于某个case语句中缺少或者漏写break语句所导致的结果. 同时:switch语句中应当注意的是: 1. default在末尾的时候它里面的break可以省略. 2. case后面只能跟常量,不能跟变量. 3. default可以在switch语句的任何位置. 4. 切记在case语句中缺少break会出现case穿透现象. 5. switch语句遇见break结束,或者程序默认执行到末尾结束. |
测试