PHP 循环中的 break 和 continue 关键词的作用和区别

先说结论:

  • break彻底终止整个循环,直接跳到循环外面且后面的语句继续执行。
  • continue跳过当前循环的剩余代码,立刻开始下一次循环。

也就是 break 后,不会再执行任何循环代码了!而 continue 只是中止当前这次循环,仍然继续循环(直接开始下一次循环)!

1. break 语句

break 用于立即退出当前所在的 forforeachwhiledo-while 或者 switch 结构。

作用: 当满足某个条件时,完全终止循环,不再执行循环中任何后续的迭代。

示例:在数组中查找一个数字,找到后立即停止循环

$numbers = [10, 20, 30, 40, 50]; $searchFor = 30; $found = false; foreach ($numbers as $number) { echo "正在检查: $number\n"; // 这会打印 10, 20, 30 if ($number == $searchFor) { $found = true; echo "找到了!\n"; break; // 找到后立即跳出整个 foreach 循环 } } if ($found) { echo "数字 $searchFor 在数组中。"; } else { echo "数字 $searchFor 不在数组中。"; }

输出:

正在检查: 10 正在检查: 20 正在检查: 30 找到了! 数字 30 在数组中。

可以看到,一旦找到数字 30,break 语句执行,循环立刻结束,后面的 40 和 50 都不会再被检查。

break 的可选参数:

从 PHP 5.4 开始,break 可以接受一个可选的数字参数,表示要跳出多少层循环。默认是 1(只跳出当前一层循环)。

// 跳出多层嵌套循环的例子 for ($i = 0; $i < 5; $i++) { for ($j = 0; $j < 5; $j++) { if ($j == 3) { break 2; // 直接跳出 2 层循环(即跳出 $i 和 $j 两个循环) } echo "i = $i, j = $j\n"; } } // 当 $j 等于 3 时,整个循环结构都会终止。

2. continue 语句

continue 用于跳过当前循环体中剩余的语句,并立即进行下一次循环的条件判断(如果是 for 循环,则会先执行迭代表达式,如 $i++)。

作用: 当满足某个条件时,不想执行本次循环剩下的代码,而是直接进入下一轮循环。

示例:打印 1 到 10 之间的所有奇数

for ($i = 1; $i <= 10; $i++) { if ($i % 2 == 0) { // 如果 $i 是偶数 continue; // 跳过本次循环中后面的 echo 语句,直接开始 $i++ 和下一次循环 } echo $i . " "; // 只有奇数才会执行到这里 }

输出:

1 3 5 7 9

当 $i 是偶数时,continue 被执行,echo 语句被跳过,循环直接进入 $i++ 并开始判断 $i <= 10,准备下一次迭代。

continue 的可选参数:

和 break 类似,continue 也可以接受一个数字参数,表示要跳过多少层循环的剩余部分。默认是 1(只跳过当前一层循环的本次迭代)。

// continue 在多层循环中的例子 $i = 0; while ($i++ < 5) { echo "外层循环: $i\n"; while (true) { echo " 内层循环\n"; continue 2; // 跳过 2 层循环的剩余部分,直接开始外层循环的下一次迭代 echo "这行永远不会被执行。"; } echo "这行也不会被执行。"; }

在这个例子中,continue 2 会直接结束当前内层循环的本次迭代和外层循环的本次迭代,直接开始外层循环的下一次($i++)。


总结与对比

特性breakcontinue
核心作用终止整个循环跳过本次循环的剩余代码
循环流程立即退出,执行循环之后的语句立即开始下一次循环迭代
可选参数break n; 跳出 n 层嵌套循环continue n; 跳过 n 层循环的本次迭代
适用场景搜索任务(找到即停止)、发生错误需终止过滤数据(忽略某些值)、满足条件无需后续操作

 

文章评论 (0)

暂无评论,快来抢沙发吧!

发表评论