首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 循環控制全解析:continue、break、exit、return、goto 差異與最佳實踐

     編輯:PHP 綜合知識

快速對照表

關鍵字作用範圍是否結束腳本典型用途
continue單層循環否跳過本次迭代,進入下一次
break循環 / switch否跳出當前結構,可帶數字跳出多層
exit / die全域是立即終止腳本,可輸出訊息或回傳狀態碼
return函數 / include / 主程式視上下文返回值並結束當前作用域
goto全域(標籤)否無條件跳轉(PHP 5.3+ 僅限同檔案,不鼓勵使用)

1. 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)使用會報錯。

2. 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。

3. 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 判斷。

4. return —— 返回上層

<?php
function test() {
    for ($i = 1000; $i >= 1; $i--) {
        if (sqrt($i) <= 29) {
            return; // 結束函數,回到呼叫處
        }
        echo "$i\n";
    }
}
test();
echo "函數結束後繼續執行";
?>

在 include 檔案中 return 會回到引入處;在主程式中等同 exit。

5. 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。

最佳實踐建議

  1. 單層循環跳過 → continue。
  2. 多層循環跳出 → break N(註明 N 代表層數)。
  3. 函數提前結束 → return。
  4. 嚴重錯誤立即停止 → exit。
  5. 避免 goto,若需複雜流程控制,改用狀態機或拆分函數。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved