本篇重點
- 認識
break
和 continue
可用在哪些地方 - 說明
break
和 continue
的基本語法 - 介紹
break n;
和 continue n;
在巢狀迴圈中的應用 - 終止或跳過的層數不能超過實際的巢狀層數,否則會有錯誤訊息
- 在
switch
裡控制外層迴圈
可用在哪些地方?
foreach
迴圈for
迴圈while
迴圈do...while
迴圈
這些結構都可以透過 break
來跳出整個迴圈,或是透過 continue
來略過本次執行,直接進入下一輪
基本語法
break
立即結束目前的迴圈,從迴圈區塊外繼續執行
php1 2 3 4 5 6 7 8
| for ($i = 0; $i < 5; $i++) { if ($i == 3) { break; } echo $i . "\n"; } echo "迴圈結束";
|
resultcontinue
跳過目前迴圈的後續內容,直接進入下一輪
php1 2 3 4 5 6 7 8
| for ($i = 0; $i < 5; $i++) { if ($i == 3) { continue; } echo $i . "\n"; } echo "迴圈結束";
|
result在巢狀迴圈中使用 break n;
與 continue n;
多層迴圈(巢狀結構)中可以在 break
或 continue
後加上數字,控制要跳出或跳過幾層迴圈
break n;
多層迴圈(巢狀結構)中,在 break
後加上數字,立即結束 n
層的迴圈,從迴圈區塊外繼續執行
php1 2 3 4 5 6 7 8 9
| for ($i = 0; $i < 3; $i++) { for ($j = 0; $j < 3; $j++) { echo "i = $i, j = $j\n"; if ($j == 1) { break 2; } } } echo "迴圈結束";
|
result1 2 3
| i = 0, j = 0 i = 0, j = 1 迴圈結束
|
continue n;
多層迴圈(巢狀結構)中,在 continue
後加上數字,跳過 n
層迴圈的後續內容,直接進入下一輪
php1 2 3 4 5 6 7 8 9
| for ($i = 0; $i < 3; $i++) { for ($j = 0; $j < 3; $j++) { echo "i = $i, j = $j\n"; if ($j == 1) { continue 2; } } } echo "迴圈結束";
|
result1 2 3 4 5 6 7
| i = 0, j = 0 i = 0, j = 1 i = 1, j = 0 i = 1, j = 1 i = 2, j = 0 i = 2, j = 1 迴圈結束
|
在 switch
裡控制外層迴圈
switch
通常搭配 break
使用來結束 case
區塊(不能使用 continue
)。但如果 switch
是寫在迴圈(如 foreach
或 for
)裡,有時會希望在 switch
中直接跳出外層的迴圈,這時可以使用 break 2
或 continue 2
。
switch
基本用法
正確範例
php1 2 3 4 5 6 7 8 9 10
| $switch = 'A'; switch ($switch) { case 'A': echo "處理 $switch\n"; break; default: echo "處理 $switch\n"; break; } echo "switch 結束\n";
|
result錯誤範例
php1 2 3 4 5
| $x = 1; switch ($x) { case 1: continue; }
|
result1
| PHP Warning: "continue" targeting switch is equivalent to "break"
|
控制外層迴圈
break 2
php1 2 3 4 5 6 7 8 9 10
| $list = ['A', 'break', 'B']; foreach ($list as $item) { switch ($item) { case 'break': break 2; default: echo "處理 $item\n"; } } echo "break 2";
|
resultcontinue 2
php1 2 3 4 5 6 7 8 9 10
| $list = ['A', 'continue', 'B']; foreach ($list as $item) { switch ($item) { case 'continue': continue 2; default: echo "處理 $item\n"; } } echo "continue 2";
|
result注意事項
結論
continue;
與 continue 1;
一樣,僅跳過當前迴圈的剩餘程式碼,進入下一次迴圈。continue n;
跳過 n
層迴圈,直接讓更外層迴圈的當前次數終止並開始下一次迴圈。- 避免濫用
continue n;
,特別是在多層迴圈,程式的可讀性會降低。
延伸閱讀