【发布时间】:2016-07-06 11:46:43
【问题描述】:
请帮忙。
for($i=0; $i<12; $i++ ){
switch($i) {
case 0:
case 1:
case 2:
case 3:
case 4:
echo ("i is less than 5 <br>");
break;
case 5:
case 6:
case 7:
case 8:
case 9:
echo ("i is less than 10 <br>");
break;
default:
echo ("i is 10 or more <br>");
}
}
这是我在 Java 书籍中获得的示例代码,我将上面的代码翻译成 PHP。
以下代码的输出:
i is less than 5
i is less than 5
i is less than 5
i is less than 5
i is less than 5
i is less than 10
i is less than 10
i is less than 10
i is less than 10
i is less than 10
i is 10 or more
i is 10 or more
我的问题是,即使案例 0 到案例 3 没有任何后续代码并且案例 4 是带有 echo 语句的案例,它怎么会输出“i 小于 5”?我很困惑,谁能给我解释一下。提前致谢。
【问题讨论】:
-
这就是“fall through”的意思——如果你在一个case语句之后没有
break;,它就会进入下一个。 -
你的标题似乎表明你已经知道答案了。此外,the manual 对此进行了很好的介绍,这应该是您研究此问题的第一个地方。
-
但是为什么 case 0 到 case 3 输出 i 小于 5,即使它没有 echo 语句。我对此进行了研究,如果一个案例没有任何中断语句,它将继续执行下一个,直到遇到中断语句。我认为它应该只在遇到案例 4 时输出 i 小于 5 一次
标签: php switch-statement case fall-through