PHP continue 语句
最后修改于 2025 年 4 月 16 日
PHP 的 continue
语句用于在循环中跳过当前迭代并继续下一个迭代。它提供对循环执行流程的控制。当遇到时,它会立即跳转到下一个迭代。
基本定义
continue
语句跳过当前循环迭代中剩余的代码。它将执行移至 for、while、do-while 和 foreach 循环中的下一个迭代。它对于跳过特定值或条件很有用。
语法:continue;
或 continue n;
,其中 n 指定要跳过多少个嵌套循环。可选的数字参数是在 PHP 5.4 中添加的。如果没有它,continue 只会影响最内层的循环。
continue 语句与 break 不同,后者会完全退出循环。Continue 仅跳过一个迭代,同时保持循环运行。两者都是循环中的强大流程控制工具。
for 循环中的基本 continue
此示例演示了使用 continue 跳过 for 循环中的偶数。
<?php declare(strict_types=1); for ($i = 1; $i <= 10; $i++) { if ($i % 2 == 0) { continue; } echo "$i "; }
代码打印 1 到 10 之间的奇数。当 $i 为偶数时,continue 跳过 echo 语句。循环继续下一个迭代。输出:1 3 5 7 9。
while 循环中的 continue
此示例显示了 continue 跳过 while 循环中的特定值。
<?php declare(strict_types=1); $count = 0; while ($count < 5) { $count++; if ($count == 3) { continue; } echo "Count: $count\n"; }
循环运行,只要 $count 小于 5。当 $count 等于 3 时,continue 跳过 echo 语句。循环继续 $count = 4。输出显示了除 3 之外的所有数字。
foreach 循环中的 continue
此示例演示了基于条件跳过数组元素。
<?php declare(strict_types=1); $fruits = ['apple', 'banana', 'cherry', 'date', 'elderberry']; foreach ($fruits as $fruit) { if (strlen($fruit) > 5) { continue; } echo "$fruit "; }
循环处理数组中的每个水果。跳过名称长度超过 5 个字符的水果。仅打印较短的水果名称。输出:apple banana date。
带可选参数的 continue
此示例显示了使用带有数字参数的 continue 来跳过外部循环。
<?php declare(strict_types=1); for ($i = 1; $i <= 3; $i++) { for ($j = 1; $j <= 3; $j++) { if ($i == $j) { continue 2; } echo "$i,$j "; } }
嵌套循环通常会产生 9 种组合。当 $i 等于 $j 时,continue 2 跳过两个循环的当前迭代。输出仅显示不相等的对:1,2 1,3 2,1 2,3 3,1 3,2。
do-while 循环中的 continue
此示例演示了 do-while 循环结构中的 continue 行为。
<?php declare(strict_types=1); $num = 0; do { $num++; if ($num % 3 == 0) { continue; } echo "$num "; } while ($num < 10);
循环打印从 1 到 10 的数字,跳过 3 的倍数。与 while 不同,do-while 始终至少执行一次。Continue 跳转到条件检查。输出:1 2 4 5 7 8 10。
switch 中的 continue
此示例显示了在循环内的 switch 语句中 continue 的行为。
<?php declare(strict_types=1); for ($i = 1; $i <= 5; $i++) { switch ($i) { case 2: echo "Two "; continue 2; case 4: echo "Four "; break; default: echo "$i "; } }
循环从 1 运行到 5。当 $i 为 2 时,continue 2 跳过 switch 和循环。对于 $i=4,break 仅退出 switch。输出:1 Two 3 Four 5。
实际示例:过滤数据
此示例显示了 continue 在过滤无效数据方面的实际应用。
<?php declare(strict_types=1); $users = [ ['name' => 'Alice', 'active' => true], ['name' => 'Bob', 'active' => false], ['name' => 'Charlie', 'active' => true], ['name' => 'Dave', 'active' => false] ]; foreach ($users as $user) { if (!$user['active']) { continue; } echo "Active user: {$user['name']}\n"; }
代码处理用户数组。仅处理活跃用户;跳过非活跃用户。这演示了实际的数据过滤。输出仅显示 Alice 和 Charlie。
最佳实践
- 清晰度: 当它使逻辑比嵌套的 if 更清晰时,使用 continue。
- 适度: 避免使用过多的 continue 语句,这会使流程难以理解。
- 注释: 当迭代不明显时,记录为什么跳过迭代。
- 备选方案: 考虑在某些情况下条件是否可能比 continue 更清晰。
- 级别: 对嵌套循环谨慎使用数字参数。
来源
本教程介绍了 PHP continue 语句,并提供了实际示例,展示了它在不同循环类型和场景中的用法。
作者
列出 所有 PHP 教程。