for 迴圈是 PHP(以及許多其他語言)中最基礎的迴圈控制結構之一。其基本語法與執行規則請參考 PHP 官方手冊。本文將介紹幾種實用的 for 迴圈變體,幫助開發者更靈活地運用迴圈。
由於三個表達式皆可為空,因此 for (;;) 會產生無限迴圈(又稱死迴圈)。雖然某些任務需要無限迴圈,但在 PHP 典型應用場景中,通常會搭配中斷條件。
<?php
// 基本無限迴圈
for (;;) {
// 放置需持續執行的語句
}
// 帶中斷條件的無限迴圈
for (;;) {
// 若年份為 2199 年則跳出
if (date('Y') == '2199') {
break;
}
}
?>
將初始化邏輯移至迴圈外部,適用於複雜的初始化需求。
<?php
if (isset($i)) {
unset($i);
if ((int)date('') < 2008) {
$i = 0;
} else {
$i = 1;
}
} else {
$i = 3;
}
for (; $i < 10; $i++) {
echo $i;
}
?>
同樣可將迭代邏輯移至迴圈主體,依條件執行不同的迭代操作。
即為無限迴圈,亦可在迴圈內部加入複雜的中斷判斷。
在單一 for 宣告中控制多個變數,常見於雙重迴圈,三重以上較少見。
<?php
for ($i = 0, $j = 10; $i <= 10; $i++, $j--) {
echo "$i + $j = 10 ";
}
?>
輸出結果:
0 + 10 = 10 1 + 9 = 10 2 + 8 = 10 ... 10 + 0 = 10
將三個表達式撰寫得更複雜,甚至可省略迴圈主體,直接在表達式中完成運算(如累加、階乘)。
<?php
// 計算 1 到 5 的累加,結果存入 $j
for ($i = 1, $j = 0; $i <= 5; $j += $i++);
echo $j; // 輸出 15
// 計算 1 到 5 的階乘,結果存入 $j
for ($i = 1, $j = 1; $i <= 5; $j *= $i++);
echo $j; // 輸出 120
?>
PHP 繼承了 C 語言的語法,強大的 for 迴圈正是典型代表。善用這些變體能讓程式碼更簡潔、高效。