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

PHP 流程控制完整教學:條件判斷、迴圈、跳脫與檔案包含

     編輯:PHP 相關知識

前言

流程控制是程式邏輯的骨架。PHP 提供豐富的控制結構,包含條件判斷、迴圈、跳脫語句與檔案包含機制。本文系統整理各類語法、執行流程、常見陷阱與最佳實踐,並附上可直接執行的範例程式碼。

一、程式的三大基本結構

  1. 順序結構:自上而下依序執行
  2. 選擇/分支結構:if、switch — 依條件決定執行路徑
  3. 迴圈結構:while、do-while、for、foreach — 重複執行

此外尚有 跳脫語句 (break, continue, return) 與 檔案包含 (include, require)。

二、條件控制語句

1. if 系列

// 單行 (不建議,易讀性差)
if ($a > 0) echo 'positive';

// 區塊式 (推薦)
if ($score >= 60) {
    echo '及格';
} elseif ($score >= 40) {
    echo '補考';
} else {
    echo '不及格';
}

// 替代語法 (適合模板檔)
if ($loggedIn):
    echo '歡迎回來';
else:
    echo '請登入';
endif;

2. switch 多重分支

switch ($action) {
    case 'create':
        createRecord();
        break; // 關鍵:避免貫穿
    case 'update':
        updateRecord();
        break;
    case 'delete':
        deleteRecord();
        break;
    default:
        throw new Exception('未知操作');
}

注意:switch 使用鬆散比較 (==),case '1' 會匹配 $var = 1。嚴格比較請用 if 串聯 ===。

3. match 運算式 (PHP 8.0+)

更嚴格、可返回值、無貫穿問題:

$message = match ($status) {
    200 => '成功',
    404 => '找不到',
    500 => '伺服器錯誤',
    default => '未知狀態',
};

三、迴圈控制語句

迴圈類型判斷時機適用場景語法範例
while先判斷後執行 (前測試)次數未知、依條件重複while ($row = $stmt->fetch()) { ... }
do-while先執行後判斷 (後測試)至少執行一次 (如選單)do { showMenu(); } while ($input != 'q');
for三段式控制已知次數、計數器邏輯for ($i=0; $i<10; $i++) { ... }
foreach專為陣列/可迭代物件遍歷陣列、物件屬性foreach ($arr as $k => $v) { ... }

foreach 兩種語法

$data = ['a' => 1, 'b' => 2];

// 僅取值
foreach ($data as $value) { ... }

// 取鍵值對
foreach ($data as $key => $value) { ... }

// 參考傳遞修改原陣列
foreach ($data as &$value) { $value *= 2; }
unset($value); // 重要:解除參考,避免後續誤用

四、跳脫語句

關鍵字作用範圍行為支援層級跳脫
breakfor, foreach, while, do-while, switch立即結束**整個**迴圈/分支break 2; 跳出兩層
continuefor, foreach, while, do-while結束**本次**迴圈,進入下一次判斷continue 2; 跳過兩層外層的本次迴圈
return函式、方法、include 檔案結束函式/檔案執行,返回值不適用

差異示意

for ($i=1; $i<=5; $i++) {
    if ($i === 3) continue; // 跳過 3
    if ($i === 5) break;    // 結束迴圈
    echo $i; // 輸出: 1 2 4
}

五、檔案包含語句

語句載入時機找不到檔案重複包含回傳值
include執行到該行發出 E_WARNING,繼續執行每次都包含包含檔案的 return 值 (預設 1)
require腳本啟動時 (編譯階段)發出 E_COMPILE_ERROR,**終止腳本**每次都包含同 include
include_once執行到該行同 include**僅包含一次**同 include (第二次回傳 true)
require_once腳本啟動時同 require**僅包含一次**同 require

選擇指南

  • 核心類別/設定檔:require_once — 必須存在、不可重複載入
  • 模板/視圖檔案:include — 允許動態決定、缺失不致命
  • 函式庫/工具類:require_once 或 include_once — 防止函式重複定義錯誤

路徑處理最佳實踐

// 使用 __DIR__ 確保相對於當前檔案位置
require_once __DIR__ . '/../config/database.php';

// 避免使用相對路徑 (./, ../) 直接在 include 中,易因執行目錄不同而失效

六、常見錯誤與除錯技巧

錯誤現象可能原因解決方案
迴圈無限執行條件變數未更新、continue 導致計數器不遞增檢查迴圈體內所有 continue 路徑是否會更新計數器
switch 貫穿執行漏寫 break習慣每個 case 結尾加 break,或改用 match
foreach 修改失效未使用參考 &$v 或修改的是複製品需修改原陣列時用 foreach ($arr as &$v)
包含檔案變數污染包含檔案使用相同變數名稱包含檔案內部用函式封裝、或使用命名空間

結語

流程控制看似基礎,實則是程式邏輯清晰度與正確性的保證。熟練掌握各類判斷、迴圈的語義差異、跳脫機制與包含策略,能讓您寫出結構清晰、易於維護、效能優異的 PHP 程式碼。建議在專案中制定編碼規範(如:統一使用大括號、優先 foreach 遍歷陣列、核心依賴用 require_once),並善用靜態分析工具 (PHPStan, Psalm) 捕捉潛在邏輯錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved