跳至內容

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 迴圈中,表示$i開始為0。當迴圈第一次執行時,它會列印的初始值,在本例中是。$i,在本例中是。0。對於每個迴圈,變數$i增加一(由$i++ 遞增步驟 表示)。當$i達到5時,它不再小於5,因此迴圈停止。

請注意,for 迴圈的初始化、條件和步驟可以為空。在這種情況下,迴圈將無限期地繼續,隨後可以使用 break 執行 來停止迴圈。

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

使用 for 迴圈遍歷陣列

[編輯 | 編輯原始碼]

在關於 while 迴圈的部分中,sort() 示例使用 while 迴圈打印出陣列的內容。通常程式設計師使用 for 迴圈 來完成此類工作。

注意:強烈不建議使用如下所示的索引。使用 key-value for-loop 結構。

$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,每次迴圈結束後加一,並檢查$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. 吐司和果醬 ✓
  2. 培根和雞蛋 ✓
  3. 土豆泥 ✓
  4. 煎鍋 ✓
  5. 牛奶和麥片 ✓

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

更多資訊

[編輯 | 編輯原始碼]


華夏公益教科書