| 關鍵字 | 作用範圍 | 是否結束腳本 | 典型用途 |
|---|---|---|---|
continue | 單層循環 | 否 | 跳過本次迭代,進入下一次 |
break | 循環 / switch | 否 | 跳出當前結構,可帶數字跳出多層 |
exit / die | 全域 | 是 | 立即終止腳本,可輸出訊息或回傳狀態碼 |
return | 函數 / include / 主程式 | 視上下文 | 返回值並結束當前作用域 |
goto | 全域(標籤) | 否 | 無條件跳轉(PHP 5.3+ 僅限同檔案,不鼓勵使用) |
continue —— 跳過本次迭代<?php
for ($i = 1; $i <= 100; $i++) {
if ($i % 3 == 0 || $i % 7 == 0) {
continue; // 略過 3 或 7 的倍數
}
echo "$i\n";
}
?>
陷阱: 在 switch 中 continue 相當於 break;在非循環結構(如單獨 if)使用會報錯。
break —— 跳出結構<?php
for ($i = 1; $i <= 10; $i++) {
for ($j = 1; $j <= 10; $j++) {
$m = $i * $i + $j * $j;
echo "$m\n";
if ($m < 90 || $m > 190) {
break 2; // 直接跳出兩層 for
}
}
}
?>
break N 可跳出 N 層巢狀結構,預設 N=1。
exit / die —— 終止腳本<?php
for ($i = 1000; $i >= 1; $i--) {
if (sqrt($i) >= 29) {
echo "$i\n";
} else {
exit; // 直接結束,後續 HTML 也不會輸出
}
}
echo "不會輸出";
?>
exit("msg"):輸出字串後終止。exit(1):回傳狀態碼 1(0-254),供 Shell 判斷。return —— 返回上層<?php
function test() {
for ($i = 1000; $i >= 1; $i--) {
if (sqrt($i) <= 29) {
return; // 結束函數,回到呼叫處
}
echo "$i\n";
}
}
test();
echo "函數結束後繼續執行";
?>
在 include 檔案中 return 會回到引入處;在主程式中等同 exit。
goto —— 無條件跳轉(不推薦)<?php
for ($i = 1000; $i >= 1; $i--) {
if (sqrt($i) <= 29) {
goto END;
}
echo "$i\n";
}
END:
echo "this is the end";
?>
限制: 不能跳入函數、循環、switch 內部;PHP 5.3+ 僅支援同檔案標籤。濫用會導致「義大利麵代碼」,請優先使用 break/continue/return。
continue。break N(註明 N 代表層數)。return。exit。goto,若需複雜流程控制,改用狀態機或拆分函數。