プログラミングでは、同じ処理を何度も繰り返したい場面が頻繁にあります。PHPのwhile文は、条件がtrueである間、繰り返し処理を実行する最も基本的なループ構造です。
この記事では、while文の基本的な書き方から、無限ループの回避方法、実践的な使用例まで詳しく解説します。
基本的な使い方
while文は「条件がtrueの間、繰り返す」というシンプルな構造です。
PHP
<?php
$count = 0;
while ($count < 5) {
echo $count . "回目の処理\n";
$count++;
}
?>
実行結果
0回目の処理
1回目の処理
2回目の処理
3回目の処理
4回目の処理
while文の実行の流れは以下のとおりです。まず条件式 $count < 5 を評価します。trueであればブロック内の処理を実行し、再び条件式を評価します。falseになった時点でループを抜けます。
ここで重要なのは、ループ内で条件を変化させる処理(この例では$count++)を必ず含めることです。これがないと条件が永遠にtrueのままとなり、無限ループに陥ります。
カウントダウンの例
PHP
<?php
$countdown = 5;
while ($countdown > 0) {
echo "$countdown...\n";
$countdown--;
}
echo "発射!\n";
?>
実行結果
5...
4...
3...
2...
1...
発射!
実践的な使用例
while文は、繰り返し回数が事前にわからない場合に特に便利です。
PHP
<?php
// 数値を2で割り続けて1以下になるまで繰り返す
$number = 128;
$steps = 0;
echo "開始値: $number\n";
while ($number > 1) {
$number = $number / 2;
$steps++;
echo "ステップ$steps: $number\n";
}
echo "合計 $steps ステップ\n";
?>
実行結果
開始値: 128
ステップ1: 64
ステップ2: 32
ステップ3: 16
ステップ4: 8
ステップ5: 4
ステップ6: 2
ステップ7: 1
合計 7 ステップ
無限ループに注意
while文の条件が永遠にtrueのままだと、プログラムが終了しなくなります。ループ内で必ず条件を変化させる処理を入れましょう。万が一無限ループに入ってしまった場合は、Ctrl+C でプログラムを強制終了できます。
while vs for
繰り返し回数が決まっている場合はfor文、条件に基づいて繰り返す場合はwhile文を使うのが一般的です。どちらでも書けますが、用途に合った方を選ぶとコードが読みやすくなります。
まとめ
- while文は条件がtrueの間、処理を繰り返し実行する
- ループ内で条件を変化させる処理を必ず含めること
- 条件を変化させないと無限ループになるので注意
- 繰り返し回数が事前にわからない場合にwhile文が適している
- 回数が決まっている場合はfor文を使う方が一般的