PHPのdo-while文は、while文と似た繰り返し処理ですが、一つ大きな違いがあります。while文は最初に条件を評価しますが、do-while文は最低1回は処理を実行してから条件を評価します。
この記事では、do-while文の基本構文、while文との違い、そして実践的な使いどころを詳しく解説します。
基本的な使い方
PHP
<?php
$count = 0;
do {
echo $count . "回目の処理\n";
$count++;
} while ($count < 5);
?>
実行結果
0回目の処理
1回目の処理
2回目の処理
3回目の処理
4回目の処理
do-while文では、まずdo { }ブロック内の処理を実行し、その後でwhile()の条件を評価します。条件がtrueであれば再びdoブロックに戻り、falseであればループを抜けます。
while文との違い
do-while文とwhile文の最大の違いは、条件がfalseでも最低1回は実行される点です。
PHP
<?php
$value = 10;
echo "--- while文 ---\n";
while ($value < 5) {
echo "whileの中: $value\n";
$value++;
}
echo "while文は実行されませんでした\n";
echo "\n--- do-while文 ---\n";
$value = 10;
do {
echo "do-whileの中: $value\n";
$value++;
} while ($value < 5);
echo "do-while文は1回実行されました\n";
?>
実行結果
--- while文 ---
while文は実行されませんでした
--- do-while文 ---
do-whileの中: 10
do-while文は1回実行されました
$valueが10でどちらも条件は $value < 5(false)です。while文は一度も実行されませんが、do-while文は1回は実行されています。
実践的な使用例
PHP
<?php
// サイコロを振って6が出るまで繰り返す(シミュレーション)
$rolls = [3, 5, 2, 6];
$index = 0;
$attempts = 0;
do {
$dice = $rolls[$index];
$attempts++;
echo "第{$attempts}投: $dice\n";
$index++;
} while ($dice !== 6);
echo "$attempts 回目で6が出ました!\n";
?>
実行結果
第1投: 3
第2投: 5
第3投: 2
第4投: 6
4 回目で6が出ました!
do-while文のセミコロンを忘れずに
do-while文は while(...) の後にセミコロン(;)が必要です。while文にはセミコロンが不要なので、混同しないように注意しましょう。
do-while文でも無限ループに注意
while文と同様に、ループ内で条件を変化させないと無限ループになります。必ず条件がfalseになるような処理をブロック内に含めましょう。
まとめ
- do-while文は最低1回は処理を実行してから条件を評価する
- while文との違いは、条件がfalseでも1回は実行される点
- 「最低1回は実行したい」処理に適している
- while()の後にセミコロン(;)が必要
- while文と同様に、無限ループにならないよう条件の変化に注意する