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

PHP 中 return、exit、break、continue 差異與使用場景詳解

     編輯:PHP 綜合知識

四大流程控制關鍵字對比

關鍵字作用域主要用途典型場景
return函數/方法結束函數執行、返回值函數提前退出、返回計算結果
exit / die整個腳本立即終止腳本、可輸出訊息/狀態碼致命錯誤、維護模式、下載輸出後結束
break循環/switch跳出當前層或指定層循環找到目標跳出、switch 分支結束
continue循環跳過本次迭代剩餘代碼、進入下一次過濾不符合條件的項目

1. return —— 函數級返回

function divide($a, $b) {
    if ($b == 0) return false; // 提前返回,不執行後續
    return $a / $b;
}

$result = divide(10, 0); // false
// return 只結束當前函數,調用者繼續執行

2. exit / die —— 腳本級終止

<?php
echo "開始\n";
exit("錯誤:配置文件缺失"); // 輸出訊息並終止,狀態碼 0
// die() 是 exit() 別名

// 帶狀態碼
exit(1); // 非零表示異常,Shell 腳本可捕獲 $?
?>
後面的代碼永不執行

3. break —— 跳出循環/Switch

$arr = ['one','two','three','stop','four'];
foreach ($arr as $v) {
    if ($v === 'stop') break; // 跳出 foreach
    echo "$v\n";
}
// 輸出:one two three

// 多層跳出
$i = 0;
while (++$i) {
    switch ($i) {
        case 5: echo "At 5\n"; break 1; // 只跳出 switch
        case 10: echo "At 10\n"; break 2; // 跳出 switch + while
    }
}

4. continue —— 跳過本次迭代

$arr = [1,2,3,4,5,6];
foreach ($arr as $v) {
    if ($v % 2 === 0) continue; // 跳過偶數
    echo "$v\n"; // 只輸出奇數
}

// 多層 continue
$i = 0;
while ($i++ < 3) {
    echo "Outer $i\n";
    $j = 0;
    while (++$j) {
        if ($j === 2) continue 2; // 跳過中層剩餘,直接進入外層下一輪
        echo "  Middle $j\n";
    }
}

常見誤區與最佳實踐

  • exit 後有緩衝區內容:exit 會刷新輸出緩衝區,但 ob_start() 開啟時需注意順序。
  • return 在全局作用域:包含文件中 return 返回給 include 調用處,不終止主腳本。
  • break/continue 只能用在循環/switch:在 if、function 中使用會報 Fatal Error。
  • switch 視為循環:PHP 中 continue 在 switch 中等同 break,若在循環內的 switch 想跳過循環本輪,用 continue 2。
  • 異常替代 exit:現代框架拋出 HttpException 由全局異常處理器統一輸出,避免到處 exit 導致測試困難。

速查決策樹

在函數內要提前結束並返回值? → return
整個腳本必須立即停止(錯誤/下載/維護)? → exit/die
在循環中找到目標不再繼續? → break
在循環中跳過當前項目處理下一個? → continue
在 switch case 結束防止貫穿? → break
在循環內的 switch 想跳過本輪循環? → continue 2
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved