PHPの基本的な制御構造のうち、同じ処理を繰り返す「ループ」の一種であるdo while文について説明します。
do while文はwhile文とほぼ同じ用途の構文ですが、必ず1回は実行される点が異なります。
do while文の書式
1 2 3 |
do { 実行内容 } while (繰り返し条件); |
while文の場合は、繰り返し条件が判定されtrueであれば処理が実行され。一方、do while文の場合は一度処理が実行されてから繰り返し条件が判定され、判定がtrueであればさらに処理が実行されます。
サンプルコード1
実際の動作をサンプルで確認してみましょう。
以下は、0から1ずつ加算されていくシンプルなプログラムです。
1 2 3 4 5 |
$i = 0; // 変数$iに0をセット do { // 繰り返しの始まり echo $i; // $iの内容を表示 $i += 1; // $iに+1 } while ($i <= 5); // 繰り返し条件の指定<br> |
実行結果1
1 |
01234 |
必ず1回は実行されるため、次の例でも少なくとも1回はechoが実行されます。
サンプルコード2
1 2 3 4 5 6 |
<?php $i = 0; do { echo $i; $i += 1; } while ($i < 0); |
実行結果2
1 |
0 |
上記のdo while文をwhile文に書き換えると、何も表示されなくなります。
サンプルコード3
1 2 3 4 5 6 |
<?php $i = 0; while ($i <= 0) { echo $i; $i += 1; } |
実行結果3
1 |
(何も表示されない) |
制御構造:break、continue
また、while文と同じく、繰り返しを終了するbreakや、繰り返しをスキップするcontinueを使うこともできます。
サンプルコード4
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $i = 0; do { if ($i == 2){ // $iが2なら $i += 1; // $iを+1 continue; // 次の繰り返しを開始 } else if ($i == 4) { // $iが4なら break; // 繰り返し中止 } echo $i; $i += 1; } while ($i < 5); |
実行結果5
1 |
013 |
"2"と、"4"以降("4"と"5")はechoされません。
繰り返し(ループ)は配列などに対して同じ処理を繰り返すときに使用する構文です。do while文はwhile文と異なり、処理を実行した後の繰り返し判定になるため、少なくとも1回は本体が実行されるという点に気をつけてください。