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 教程。