跳至內容

PHP 程式設計/for 迴圈

來自華夏公益教科書,開放的書籍,為開放的世界

for 迴圈

[編輯 | 編輯原始碼]

for 迴圈是大多數現代程式語言中基本迴圈結構之一。與while 迴圈類似,for 迴圈會執行給定的程式碼塊,直到滿足某個條件。

PHP 中 for 迴圈的基本語法類似於 C 語法

 for ([initialization]; [condition]; [step])

初始化在迴圈第一次執行時發生。它用於初始化變數或執行其他要在迴圈體第一次執行之前執行的操作。

條件在迴圈體每次執行之前都會進行評估;如果條件為真,則會執行迴圈體,如果條件為假,則退出迴圈,程式執行將從迴圈體之後的首行程式碼繼續執行。

步長指定在迴圈體每次執行之後要執行的操作。

考慮以下示例

PHP 程式碼:

for ($i = 0; $i < 5; $i++) {
  echo($i . "&lt;br /&gt;");
}

PHP 輸出:

0<br />1<br />2<br />3<br />4<br />

HTML 渲染:

 0
 1
 2
 3
 4


迴圈也可以根據個人喜好,在不使用 連線 的情況下進行格式化。

for ($i = 0; $i < 5; $i++) {
  echo "$i&lt;br /&gt;";
}

在 for 迴圈中,它指示$i0開始。當迴圈第一次執行時,它會打印出$i的初始值,在示例中為0。對於每個迴圈,變數$i都會增加 1(由$i++ 遞增步長表示)。當$i達到5時,它不再小於5,因此迴圈停止。

請注意,for 迴圈的初始化、條件和步長可以留空。在這種情況下,迴圈將無限期地繼續,因此可以利用 中斷執行 來停止迴圈。

注意:與 C、C#C++Java 等其他語言不同,在 for 迴圈中使用的變數可能是在 for 語句所在行中首先初始化的,但它在迴圈結束後仍然存在。

使用 for 迴圈遍歷陣列

[編輯 | 編輯原始碼]

在 while 迴圈部分中,sort() 示例使用 while 迴圈來打印出陣列的內容。通常情況下,程式設計師會使用 for 迴圈 來完成這種工作。

注意:強烈不建議使用以下所示的索引。請使用鍵值 for 迴圈結構。

$menu = array("Toast and jam", "Bacon and eggs", "Homefries", "Skillet", "Milk and cereal");
// Note to self: get breakfast after writing this article
$count = count($menu);
for ($i = 0; $i < $count; $i++) {
  echo ($i + 1 . ". " . $menu[$i] . "&lt;br /&gt;");
}

同樣,如果喜歡,也可以在不進行連線的情況下進行格式化。

for ($i = 0; $i < $count; $i++) {
  $j = $i + 1;
  echo "$j. {$menu[$i]}&lt;br /&gt;";
}
$count = count($menu);

我們在 for 迴圈之前定義計數器,以提高處理效率。這是因為 for 迴圈每次執行時(while $i < $count),它會評估等式的兩邊並執行任何函式。如果我們寫$i < count($menu),這將在每次執行過程中評估count($menu),在處理大型陣列時成本很高。

for ($i = 0; $i < $count; $i++)

這行程式碼設定了迴圈。它將計數器$i,初始化為0,並在每次迴圈結束後加 1,並檢查$i是否小於陣列的大小。

這也可以使用第二個初始化來完成。

for ($i = 0, $count = count($menu); $i < $count; $i++) {
  echo ($i + 1 . ". " . $menu[$i] . "&lt;br /&gt;");
}

echo 語句非常直觀,除了開頭,我們 echo$i + 1。我們之所以這樣做,是因為如你所知,陣列從0開始,到n - 1結束(其中n是它們的長度),因此要獲得從 1 開始的編號列表,我們必須在每次列印計數器時加 1。

當然,如我之前提到的,兩段程式碼都產生以下輸出

  1. 吐司和果醬 ✓
  2. 培根和雞蛋 ✓
  3. 土豆泥 ✓
  4. 煎鍋 ✓
  5. 牛奶和麥片 ✓

信不信由你,實際上有一種遍歷陣列的方法需要更少的鍵入操作。(而這難道不是我們的目標嗎?)請檢視 foreach 迴圈,瞭解另一種執行我們在這裡所做操作的方法。

更多資訊

[編輯 | 編輯原始碼]


華夏公益教科書