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

PHP 四大迴圈結構完整解析:while、do-while、for、foreach

     編輯:PHP 綜合知識

迴圈是程式設計中控制流程的核心結構,PHP 提供四種迴圈語法,各有適用場景。本文系統性整理四種迴圈的語法、運作機制、適用時機與實務範例,助你精準選擇最適合的迴圈結構。

迴圈類型對照表

迴圈類型檢查時機適用場景關鍵字
while前置判斷次數未知,依條件持續條件為真才執行
do-while後置判斷至少執行一次,再依條件先執行再判斷
for前置判斷已知迴圈次數或計數器初始化、條件、遞增
foreach陣列遍歷遍歷陣列/物件每個元素自動處理指標移動

1. while 迴圈 - 條件前置判斷

語法結構

while (條件表達式) {
    // 迴圈主體
}

執行流程

  1. 評估條件表達式
  2. 為 true → 執行主體 → 回步驟 1
  3. 為 false → 跳出迴圈

範例:輸出 11~20

<?php
$a = 11;
while ($a <= 20) {
    echo "while 輸出數值:{$a}<br>";
    $a++;
}
?>

輸出結果

while 輸出數值:11
while 輸出數值:12
...
while 輸出數值:20

常見應用

  • 資料庫結果集讀取:while ($row = $stmt->fetch())
  • 檔案逐行讀取:while (!feof($fp))
  • 條件不確定的輪詢等待

2. do-while 迴圈 - 至少執行一次

語法結構

do {
    // 迴圈主體
} while (條件表達式);

關鍵差異

無條件先執行一次主體,再檢查條件決定是否繼續。適合「選單系統」、「輸入驗證」等至少需互動一次的場景。

範例:同樣輸出 11~20

<?php
$a = 11;
do {
    echo "do-while 輸出數值:{$a}<br>";
    $a++;
} while ($a <= 20);
?>

3. for 迴圈 - 計數器控制

語法結構

for (初始化; 條件; 遞增/遞減) {
    // 迴圈主體
}

三段式說明

區段執行時機說明
初始化迴圈開始前,僅一次通常設定計數器 $i = 0
條件每次迴圈開始前為 true 繼續,false 結束
遞增每次迴圈結束後通常 $i++ 或 $i += 2

範例:輸出 11~20

<?php
for ($a = 11; $a <= 20; $a++) {
    echo "for 輸出數值:{$a}<br>";
}
?>

進階用法

// 多重初始化/遞增
for ($i = 0, $j = 10; $i <= 10; $i++, $j--) {
    echo "$i + $j = " . ($i + $j) . "<br>";
}

// 省略區段(需保留分號)
$i = 0;
for (; $i < 5; ) {
    echo $i++ . "<br>";
}

// 無限迴圈
for (;;) {
    // 需配合 break 跳出
}

4. foreach 迴圈 - 陣列遍歷專用

語法結構

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

// 同時取鍵值
foreach ($array as $key => $value) { ... }

// 參考傳遞(可修改原陣列值)
foreach ($array as &$value) { $value *= 2; }
unset($value); // 重要:解除參考

範例:輸出陣列元素

<?php
$fruits = ['apple', 'banana', 'orange', 'grape', 'mango'];
foreach ($fruits as $fruit) {
    echo "逐一輸出陣列值:{$fruit}<br>";
}
?>

輸出結果

逐一輸出陣列值:apple
逐一輸出陣列值:banana
逐一輸出陣列值:orange
逐一輸出陣列值:grape
逐一輸出陣列值:mango

效能與選擇指南

場景推薦迴圈理由
遍歷索引陣列foreach語法簡潔、自動處理指標、效能佳
遍歷關聯陣列需鍵名foreach ($arr as $k => $v)唯一能同時取得鍵值的標準語法
已知具體迴圈次數for計數器語意明確、易於控制步進
依條件不定次數while條件邏輯獨立、可讀性高
至少執行一次do-while語意精確對應需求
大量資料處理foreach / for避免函式呼叫開銷,foreach 內部優化最好

常見錯誤與最佳實務

  • 無限迴圈:忘記更新條件變數 → 永遠為 true
  • 離一錯誤:<= vs < 邊界條件搞錯
  • foreach 參考殘留:迴圈後未 unset($value) 導致後續誤用
  • 修改迴圈中陣列:foreach 中 unset 當前元素安全,但新增元素不會被遍歷
  • 巢狀迴圈變數衝突:內外層使用相同變數名 $i

控制流程關鍵字

  • break:立即跳出當前層級迴圈
  • break 2:跳出兩層巢狀迴圈
  • continue:跳過本次迭代,直接進入下一次條件判斷
  • continue 2:跳過外層迴圈的本次迭代

熟練掌握四種迴圈的特性與適用場景,能寫出更簡潔、高效、可維護的 PHP 程式碼。

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