【PHP】while文 – 繰り返し処理で同じ処理を複数回実行する

繰り返し処理にはwhile文と呼ばれるfor文と同様に繰り返し処理を行う仕組みがあります。

ここではwhile文について解説します。

★ 内容

  • while文
  • 無限ループ

while文とは

while文とは繰り返し処理を行うための仕組みです。
for文と同じ役割を果たすことができ、特にwhile文は繰り返し回数が決まっていない場合に使われることがあります。

基本構文

while文の基本構文は次のようになります。

while( 条件式 ) {
    // 処理1
    // 処理2
    // ・・・・・・・・
}

条件式が真(true)の間、繰り返し実行します。

処理の順序

while文の処理順序は次のようになります。

  1. 条件式を実行
  2. 繰り返し処理の終了判定(条件式が真の場合は3へ、偽の場合は終了)
  3. ブロックの処理を実行

while文はfor文と異なり、条件式で使う変数の値を変える変化式がありません。
そのため、ブロック内で変化式と同等の処理を行います。

サンプルコード

while文のサンプルコードをご覧ください。

ソースコード

<?php

$num = 1;
while( $num < 30 ) {
    $num = $num * 2;
    echo '$num = '.$num."\n";
}

?>

実行結果

$num = 2
$num = 4
$num = 8
$num = 16
$num = 32

2の累乗が“30を超えるまで”出力するプログラムです。

条件式は$num < 30となっており、$num = $num * 2で繰り返しごとに$numの値を変更しています。
5回目の繰り返しで$numの値は32になり、条件式がfalseになるため繰り返し処理を終了しています。

無限ループ

無限ループは言葉の通り、永遠と繰り返し処理を続けることです。
while文の条件式の部分を真偽値のtrueとすると、無限ループを作ることができます。

ソースコード

<?php

while( true ) {
    echo "infinite loop.\n";
}

?>

実行結果

infinite loop.
infinite loop.
infinite loop.
infinite loop.
infinite loop.
.......

while文の条件式がtrueで、繰り返し処理を終了することがないので、infinite loop.が出力され続けます。

無限ループを終了するには、プログラムを中断する必要があります。
中断はコマンドラインでControl+Cを入力します。
コードを間違って無限ループになってしまった際に中断する方法としても使えますので覚えておきましょう。

演習問題

問題1

解答例

1からコマンドライン引数で与えた数値までの合計値を計算するプログラムを作成してください。
なお、下記条件を満たすものとします。

  • while文を使って合計値を計算する

実行例

コマンドライン

php practice.php 27

実行結果

total : 378

問題2

解答例

0からコマンドライン引数で与えた数値まで偶数の合計値を計算するプログラムを作成してください。
なお、下記条件を満たすものとします。

  • while文を使って合計値を計算する

実行例

コマンドライン

php practice.php 100

実行結果

total : 2550

問題3

解答例

九九を出力するプログラムを作成してください。
なお、下記条件を満たすものとします。

  • while文を使う。

実行結果

-- 1の段 --
1 × 1 = 1
1 × 2 = 2
1 × 3 = 3
1 × 4 = 4
1 × 5 = 5
1 × 6 = 6
1 × 7 = 7
1 × 8 = 8
1 × 9 = 9

-- 2の段 --
2 × 1 = 2
2 × 2 = 4
2 × 3 = 6
2 × 4 = 8
2 × 5 = 10
2 × 6 = 12
2 × 7 = 14
2 × 8 = 16
2 × 9 = 18

-- 3の段 --
3 × 1 = 3
3 × 2 = 6
3 × 3 = 9
3 × 4 = 12
3 × 5 = 15
3 × 6 = 18
3 × 7 = 21
3 × 8 = 24
3 × 9 = 27

-- 4の段 --
4 × 1 = 4
4 × 2 = 8
4 × 3 = 12
4 × 4 = 16
4 × 5 = 20
4 × 6 = 24
4 × 7 = 28
4 × 8 = 32
4 × 9 = 36

-- 5の段 --
5 × 1 = 5
5 × 2 = 10
5 × 3 = 15
5 × 4 = 20
5 × 5 = 25
5 × 6 = 30
5 × 7 = 35
5 × 8 = 40
5 × 9 = 45

-- 6の段 --
6 × 1 = 6
6 × 2 = 12
6 × 3 = 18
6 × 4 = 24
6 × 5 = 30
6 × 6 = 36
6 × 7 = 42
6 × 8 = 48
6 × 9 = 54

-- 7の段 --
7 × 1 = 7
7 × 2 = 14
7 × 3 = 21
7 × 4 = 28
7 × 5 = 35
7 × 6 = 42
7 × 7 = 49
7 × 8 = 56
7 × 9 = 63

-- 8の段 --
8 × 1 = 8
8 × 2 = 16
8 × 3 = 24
8 × 4 = 32
8 × 5 = 40
8 × 6 = 48
8 × 7 = 56
8 × 8 = 64
8 × 9 = 72

-- 9の段 --
9 × 1 = 9
9 × 2 = 18
9 × 3 = 27
9 × 4 = 36
9 × 5 = 45
9 × 6 = 54
9 × 7 = 63
9 × 8 = 72
9 × 9 = 81

まとめ

while文は繰り返し処理を行うための記法です。

繰り返しごとに条件式を評価し、偽(false)になるまで実行します。

プログラム中で多々使われることがあるので、使えるようになっていきましょう。