基礎

PHPのdo-while文入門|最低1回は実行されるループ処理

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文と同様に、無限ループにならないよう条件の変化に注意する