程式流程控制僅有三種基本結構:順序、分支、迴圈。PHP 完整實現了結構化程式設計的所有控制流,本文提供全景式總覽與導航。
預設自上而下逐行執行,無條件跳轉。所有 PHP 腳本本質上都是順序結構的組合。
| 結構 | 關鍵字 | 分支數 | 適用場景 | 詳細指南 |
|---|---|---|---|---|
| 單分支 | if | 1 | 條件滿足才執行 | PHP 單分支 if |
| 雙分支 | if-else | 2 | 真/假兩條路徑 | PHP 雙分支 if-else |
| 多分支 | if-elseif-else | N | 多條互斥條件 | PHP 多分支 |
| 多路選擇 | switch | N | 離散值匹配 | PHP switch 語句 |
| 迴圈類型 | 關鍵字 | 判斷時機 | 最少執行 | 適用場景 | 詳細指南 |
|---|---|---|---|---|---|
| 計數迴圈 | for | 先判斷 | 0 | 已知次數/計數器 | PHP for 迴圈 |
| 條件迴圈 | while | 先判斷 | 0 | 未知次數/條件驅動 | PHP while 迴圈 |
| 至少一次 | do-while | 後判斷 | 1 | 菜單/輸入驗證 | PHP do-while 迴圈 |
| 遍歷迴圈 | foreach | 先判斷 | 0 | 陣列/物件遍歷 | 陣列章節 |
break:跳出當前迴圈或 switch,可加數字跳出多層 break 2continue:跳過本次迴圈剩餘,進入下輪判斷,可加數字 continue 2return:直接結束函數執行exit/die:終止腳本執行goto:無條件跳轉(慎用,PHP 5.3+)<?php if ($cond): ?> ... <?php else: ?> ... <?php endif; ?>
<?php while ($row = $stmt->fetch()): ?> ... <?php endwhile; ?>
<?php for ($i=0; $i<10; $i++): ?> ... <?php endfor; ?>
<?php foreach ($items as $item): ?> ... <?php endforeach; ?>
<?php switch ($x): ?> <?php case 1: ?> ... <?php break; ?> <?php endswitch; ?>
$isValid、$hasPermission 替代複雜表達式<?php
function numberGenerator($max) {
for ($i = 0; $i < $max; $i++) {
yield $i; // 暫停並產出值
}
}
foreach (numberGenerator(1000000) as $n) {
// 記憶體常數級,不會一次性生成百萬元素陣列
if ($n > 10) break;
}
?>
掌握三大結構與關鍵字,配合現代 PHP 特性(生成器、箭頭函數、模式匹配 PHP 8+),能編寫出清晰、高效、可維護的流程邏輯。