在PHP的流程控制逻辑中,continue是一个用于循环结构的特殊语句,它的核心作用是跳过当前循环迭代中剩余的代码,直接进入下一次循环的判断或执行环节,这也是很多开发者遇到continue后代码不执行的根本原因。
continue语句的基本执行逻辑
continue只会在循环结构(for、while、do-while、foreach)中生效,当代码执行到continue时,会立刻终止当前迭代中continue之后的所有代码,然后根据循环类型执行对应的后续操作:
- for循环:先执行循环变量更新表达式,再进行循环条件判断
- while、do-while循环:直接回到循环条件判断位置
- foreach循环:直接读取下一个数组元素进入下一次迭代
不同循环中的continue使用示例
for循环中的continue表现
下面的示例会输出1到5中所有不是3的数字,当$i等于3时,continue后的输出语句不会执行:
<?php
for ($i = 1; $i <= 5; $i++) {
if ($i == 3) {
continue; // 跳过当前迭代剩余代码
}
// 这里的代码在$i等于3时不会执行
echo "当前数字:" . $i . "<br/>";
}
?>
上述代码的执行结果是:
当前数字:1 当前数字:2 当前数字:4 当前数字:5
foreach循环中的continue表现
在处理数组时,continue同样会跳过当前元素的后续处理逻辑,下面的示例会过滤掉数组中值为偶数的元素:
<?php
$numArr = [1, 2, 3, 4, 5];
foreach ($numArr as $num) {
if ($num % 2 == 0) {
continue; // 偶数跳过,不执行后续输出
}
echo "奇数:" . $num . "<br/>";
}
?>
continue的层级使用说明
PHP的continue支持指定跳过的循环层级,默认是1表示跳过当前最内层循环。如果存在多层嵌套循环,可以通过continue n的形式跳过外层循环,n的取值不能超过当前嵌套循环的层数:
<?php
for ($i = 1; $i <= 3; $i++) {
for ($j = 1; $j <= 3; $j++) {
if ($j == 2) {
continue 2; // 跳过外层for循环的当前迭代,进入$i的下一次循环
}
echo "i:{$i}, j:{$j}<br/>";
}
}
?>
常见使用注意事项
开发者在使用continue时需要注意几个常见问题:
- continue不能用于循环结构之外,否则会触发语法错误
- 如果需要在跳过逻辑的同时终止整个循环,应该使用break而不是continue
- 在switch语句中如果需要跳过后续case,应该使用break,continue在switch中仅当switch处于循环内时才有效
理解continue的执行逻辑后,就可以在需要过滤循环元素、跳过指定条件的场景正确使用它,避免因为不了解特性导致的代码逻辑错误。