do-while

(PHP 4, PHP 5, PHP 7, PHP 8)

do-while 循環(huán)和 while 循環(huán)非常相似,區(qū)別在于表達(dá)式的值是在每次循環(huán)結(jié)束時檢查而不是開始時。和一般的 while 循環(huán)主要的區(qū)別是 do-while 的循環(huán)語句保證會執(zhí)行一次(表達(dá)式的真值在每次循環(huán)結(jié)束后檢查),然而在一般的 while 循環(huán)中就不一定了(表達(dá)式真值在循環(huán)開始時檢查,如果一開始就為 false 則整個循環(huán)立即終止)。

do-while 循環(huán)只有一種語法:

<?php
$i 
0;
do {
   echo 
$i;
} while (
$i 0);
?>

以上循環(huán)將正好運(yùn)行一次,因?yàn)榻?jīng)過第一次循環(huán)后,當(dāng)檢查表達(dá)式的真值時,其值為 false$i 不大于 0)而導(dǎo)致循環(huán)終止。

資深的 C 語言用戶可能熟悉另一種不同的 do-while 循環(huán)用法,把語句放在 do-while(0) 之中,在循環(huán)內(nèi)部用 break 語句來結(jié)束執(zhí)行循環(huán)。以下代碼片段示范了此方法:

<?php
do {
    if (
$i 5) {
        echo 
"i is not big enough";
        break;
    }
    
$i *= $factor;
    if (
$i $minimum_limit) {
        break;
    }
    echo 
"i is ok";

    
/* process i */

} while(0);
?>

可以使用 goto 跳出循環(huán),取代這種 hack 的方式。