先说结论:
也就是 break 后,不会再执行任何循环代码了!而 continue 只是中止当前这次循环,仍然继续循环(直接开始下一次循环)!
1. break 语句
break 用于立即退出当前所在的 for、foreach、while、do-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++)。
总结与对比
| 特性 | break | continue |
|---|---|---|
| 核心作用 | 终止整个循环 | 跳过本次循环的剩余代码 |
| 循环流程 | 立即退出,执行循环之后的语句 | 立即开始下一次循环迭代 |
| 可选参数 | break n; 跳出 n 层嵌套循环 | continue n; 跳过 n 层循环的本次迭代 |
| 适用场景 | 搜索任务(找到即停止)、发生错误需终止 | 过滤数据(忽略某些值)、满足条件无需后续操作 |
文章评论 (0)
发表评论