三層巢狀循環(for + foreach + foreach),需在最內層滿足條件時「跳出第 2 層」,繼續執行第 1 層下一次迭代。
<?php
for ($i = 0; $i < 3; $i++) {
foreach (array(1, 2, 3) as $val) {
foreach (array(1, 2, 3) as $val) {
echo "第 1 層循環<br/>";
break 2; // 跳出第 2 層(外層 foreach)
}
echo "第 2 層循環<br/>"; // 不會執行
}
echo "第 3 層循環<br/>"; // 繼續執行
}
?>
第 1 層循環 第 3 層循環 第 1 層循環 第 3 層循環 第 1 層循環 第 3 層循環
break 後的數字代表「要跳出的層數」,從內層向外計數:1=當前層,2=上一層,以此類推。break 2 會結束第 2 層循環,控制權回到第 3 層(最外層 for)繼續下一次迭代。break 1,僅跳出當前層。break 2 跳出前兩層,實際是「跳出第 2 層」。switch 中使用 break 2:switch 不計入循環層數,需用 break 2 跳出包含 switch 的循環。break 跳出非循環結構(如 if),會報 Fatal Error。若層數動態或超過 3 層,建議改用標記變數法:
$stop = false;
for ($i = 0; $i < 3 && !$stop; $i++) {
foreach ($arr1 as $v1) {
foreach ($arr2 as $v2) {
if ($condition) { $stop = true; break; }
}
if ($stop) break;
}
}
或將內層封裝為函數,用 return 直接返回。