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