PHP Conference Japan 2024

do-while

(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 運算子來代替這種技巧。

新增註解

使用者貢獻的註解 1 則註解

jayreardon at gmail dot com
17 年前
使用 do-while 迴圈與使用簡單的 while 迴圈有一個主要區別需要注意:那就是檢查條件的時機。

在 do-while 迴圈中,測試條件的評估是在迴圈的結尾。這表示迴圈內的程式碼會在條件被評估之前迭代一次。這對於需要在進行繼續測試之前執行一次的任務來說非常理想,例如依賴於迴圈結果的測試。

相反地,普通的 while 迴圈會在迴圈開始執行任何程式碼塊之前,在迴圈的開頭評估測試條件。如果由於某些原因,您的測試條件在迴圈一開始就被評估為 false,則迴圈內的程式碼將不會被執行。
To Top