使用 do-while 迴圈與使用簡單的 while 迴圈有一個主要區別需要注意:那就是檢查條件的時機。
在 do-while 迴圈中,測試條件的評估是在迴圈的結尾。這表示迴圈內的程式碼會在條件被評估之前迭代一次。這對於需要在進行繼續測試之前執行一次的任務來說非常理想,例如依賴於迴圈結果的測試。
相反地,普通的 while 迴圈會在迴圈開始執行任何程式碼塊之前,在迴圈的開頭評估測試條件。如果由於某些原因,您的測試條件在迴圈一開始就被評估為 false,則迴圈內的程式碼將不會被執行。
(PHP 4, PHP 5, PHP 7, PHP 8)
do-while
迴圈與 while
迴圈非常相似,差別在於條件判斷是在每次迭代的結尾而不是開頭進行檢查。與一般的 while
迴圈的主要區別在於,do-while
迴圈保證會至少執行一次(條件判斷只在迭代結束時進行),而一般的 while
迴圈則不一定會執行(條件判斷在每次迭代開始時進行,如果一開始就判斷為 false
,迴圈將立即結束)。
do-while
迴圈只有一種語法:
<?php
$i = 0;
do {
echo $i;
} while ($i > 0);
?>
上述迴圈只會執行一次,因為在第一次迭代之後,當檢查條件表達式時,它會被評估為false
($i 不大於 0),迴圈執行就會結束。
進階 C 語言使用者可能熟悉 do-while
迴圈的另一種用法,允許透過將程式碼區塊用 do-while
(0) 包裝,並使用 break
陳述式來停止程式碼區塊中間的執行。以下程式碼片段示範了這一點:
<?php
do {
if ($i < 5) {
echo "i is not big enough";
break;
}
$i *= $factor;
if ($i < $minimum_limit) {
break;
}
echo "i is ok";
/* 處理 i */
} while (0);
?>
可以使用 goto
運算子來代替這種技巧。
使用 do-while 迴圈與使用簡單的 while 迴圈有一個主要區別需要注意:那就是檢查條件的時機。
在 do-while 迴圈中,測試條件的評估是在迴圈的結尾。這表示迴圈內的程式碼會在條件被評估之前迭代一次。這對於需要在進行繼續測試之前執行一次的任務來說非常理想,例如依賴於迴圈結果的測試。
相反地,普通的 while 迴圈會在迴圈開始執行任何程式碼塊之前,在迴圈的開頭評估測試條件。如果由於某些原因,您的測試條件在迴圈一開始就被評估為 false,則迴圈內的程式碼將不會被執行。