此页面顶部的备注“在 PHP 中,switch 语句被视为循环结构以用于 continue”让我感到困惑,因此我使用以下代码进行了一些实验,以找出 switch 内部 continue 的确切语义
<?php
for( $i = 0; $i < 3; ++ $i )
{
echo ' [', $i, '] ';
switch( $i )
{
case 0: echo 'zero'; break;
case 1: echo 'one' ; XXXX;
case 2: echo 'two' ; break;
}
echo ' <' , $i, '> ';
}
?>
对于 XXXX,我填写了
- continue 1
- continue 2
- break 1
- break 2
并观察了不同的结果。这让我得出了以下描述 break 和 continue 之间区别的单行语句
continue 在紧靠结束大括号 (}) 之前恢复执行,而 break 在结束大括号之后恢复执行。
推论:由于 switch 不是(真正)循环结构,因此在 switch 的结束大括号之前恢复执行的效果与使用 break 语句相同。在 (for、while、do-while) 循环的情况下,在结束大括号之前恢复执行意味着开始新的迭代——这当然与 break 语句的行为大不相同。
在上面的单行语句中,我忽略了 break/continue 参数的存在,但当提供参数时,该单行语句也仍然有效。