在 PHP 開發中,循環結構是處理重複性任務的核心工具。PHP 提供了四種主要的循環語句:while、do-while、for 和 foreach。每種循環都有其適用場景,掌握它們的差異與優勢,能讓程式碼更簡潔、高效。
foreach 專為陣列設計,PHP 4.0 引入,PHP 5 起支援物件遍歷。它提供兩種語法形式:
foreach (array_expression as $value) {
// 執行程式碼
}
foreach (array_expression as $key => $value) {
// 執行程式碼
}
<?php
$array1 = array(1, 2, 3, 4, 5);
foreach ($array1 as $abc) {
echo "new value is " . ($abc * 10) . "<br>";
}
?>
輸出結果:
new value is 10 new value is 20 new value is 30 new value is 40 new value is 50
<?php
$s = array(array(1,2), array(3,4), array(5,6));
foreach ($s as $v => $_v) {
foreach ($_v as $vc => $_vc) {
echo $_vc[0] . '|' . $_vc[1] . '<br />';
}
}
?>
for 循環適合已知迭代次數或需要精確控制計數器的場景。
for (expr1; expr2; expr3) {
statement;
}
<?php
// 寫法 1:標準形式
for ($i = 1; $i <= 10; $i++) {
echo $i;
}
// 寫法 2:在循環體中 break
for ($i = 1; ; $i++) {
if ($i > 10) break;
echo $i;
}
// 寫法 3:初始化在外部
$i = 1;
for (; ; ) {
if ($i > 10) break;
echo $i;
$i++;
}
// 寫法 4:多重初始化與運算
for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
?>
<?php
$people = array(
array('name' => 'Kalle', 'salt' => 856412),
array('name' => 'Pierre', 'salt' => 215863)
);
for ($i = 0; $i < count($people); ++$i) {
$people[$i]['salt'] = rand(000000, 999999);
}
?>
while 是最簡單的循環,只要條件為 TRUE 就持續執行。
<?php
// 大括號風格
$i = 1;
while ($i <= 10) {
echo $i++;
}
// 替代語法(適合模板混編)
$i = 1;
while ($i <= 10):
echo $i;
$i++;
endwhile;
?>
do-while 與 while 的關鍵差別:**條件判斷在循環體之後**,確保循環體至少執行一次。
<?php
$i = 0;
do {
if ($i < 5) {
echo "i is not big enough";
break;
}
$i *= $factor;
if ($i < $minimum_limit) break;
echo "i is ok";
// process i
} while (0);
?>
| 循環類型 | 適用場景 | 特點 |
|---|---|---|
| foreach | 陣列/物件遍歷 | 語法簡潔、自動處理指標、效能佳 |
| for | 已知次數、複雜計數邏輯 | 控制精確、三段式結構清晰 |
| while | 未知次數、條件驅動 | 簡單直觀、可能零次執行 |
| do-while | 至少需執行一次 | 後置判斷、保證首次執行 |
each() 後需 reset() 重置指標&$value 參考傳遞PHP 的四大循環各有千秋。foreach 是陣列處理的首選;for 適合精確控制;while 處理條件未知的重複;do-while 確保首次執行。實戰中根據業務邏輯選擇最合適的循環,能讓程式碼更具可讀性與維護性。