页面顶部的“在 PHP 中,switch 语句被认为是循环结构,用于 continue”这句话让我很困惑,所以我使用以下代码进行了一些实验,以弄清楚 continue 在 switch 中的具体语义。
<?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 参数的存在,但当提供参数时,该单行总结也仍然有效。