do...while 敘述也是迴圈敘述,但是 do...while 與 while 不同的地方在於,do...while 一定會先執行 do 裡的敘述 1 次,但是 while 則不一定。因為 while 是先去判斷 EXPRESSION 是否成立,而 do...while 則是先執行 1 次後才去判斷 EXPRESSION。
do...while 的語法:
do { statement1; statement2; // 先執行這裡的 statements 一次,然後再判斷 // EXPRESSION, ... // 當 EXPRESSION 當 true 時,則繼續執行這裡的敘述。 } while (expr);
do...while 迴圈的最大特色是,do 裡面的程式碼會至少被執行 1 次。另外,do...while 述敘並沒有冒號的寫法。
請看底下的範例:
<?php $a = 1; $sum = 0; do { $sum = $sum+$a; $a = $a+1; } while ($a <= 10);; ?>
與 while 的範例結果相同,最後 $sum 的值一樣是 55。
那麼 while 與 do...while 不同的地方什麼場合比較明顯呢?請看底下的範例:
<?php while ($a == true) { echo "Hello!"; $a = false; }
do { echo "Hello!"; $a = false; } while ($a == true); ?>
這是 while 與 do...while 的程式片斷,這 2 段程式最大的不同在於:如果 $a 的初始值為 true,則 2 個程式片斷的輸出結果相同。但是如果 $a 的初始值為 false,則 while 不會有任何輸出,但是 do...while 則一定會被執行 1 次,因此會輸出 1 個 Hello! 的字串。
程式:當 $a = false 輸出結果
$a = false; while ($a == true) { echo "Hello!"; $a = false; } (沒有輸出) $a = false; do { echo "Hello!"; $a = false; } while ($a == true); // Hello!
程式:當 $a = true 輸出結果
$a = true; while ($a == true) { echo "Hello!"; $a = false; } // Hello! $a = true; do { echo "Hello!"; $a = false; } while ($a == true); // Hello!
--jollen