do..while文
while文はまず最初に条件式の評価が行われますので場合によっては一度もブロック内の処理が実行されないこともありますが、必ず1回は処理を行う場合にはdo..while文が便利です。書式は次のようになっています。
do{ 実行する処理1; 実行する処理2; }while (条件式);
do..while文では、まずブロック内野処理が実行された後で条件式の評価が行われます。その為、少なくとも1回は必ずブロック内の処理が実行されます。条件式の評価が真(TRUE)であれば再度先頭に戻りブロック内の処理を実行します。偽(FALSE)ならばdo..while文を終了します。
実行される処理が1つだけの場合はブロックを省略して次のように記述しても構いません。
do 実行する処理; while (条件式);
ではdo..while文がどのように実行されるのか確認していきます。次のような例で考えてみます。
$num = 0; do{ print "num=".$num; $num += 1; }while (num < 2);
この時、次のように実行されます。
1) 変数「num」に「0」を代入 2) 変数「num」の値を出力 3) 変数「num」に代入されている値を1だけ加算。変数「num」は「1」が代入される 4) 条件式を評価。変数「num」は2より小さいのでdo..while文の先頭へ戻る 5) 変数「num」の値を出力 6) 変数「num」に代入されている値を1だけ加算。変数「num」は「2」が代入される 7) 条件式を評価。変数「num」は2より小さいくない為、do..while文を終了
まずブロック内の処理が行われてから、繰り返しを継続するかどうか条件式の評価を行っています。
なおwhile文と同じく「break」や「continue」を利用することが可能です。
サンプルプログラム
では簡単なプログラムで試して見ます。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <title>PHPテスト</title> </head> <body> <p>PHPのテストです。</p> <p> <?php $num = 0; do{ print 'num = '.$num.'<br />'; $num += 1; }while ($num < 3); ?> </p> </body> </html>
上記のファイルをWWWサーバのドキュメントルート以下に設置しブラウザからアクセスすると次のように表示されます。
( Written by Tatsuo Ikura )