PHPのfor, while, do-whileループの使い方を完全ガイド!初心者でもわかる繰り返し処理
新人
「PHPで同じ処理を何回も繰り返す方法はありますか?」
先輩
「はい、PHPには繰り返し処理を行うためのループ文があります。特にfor
、while
、do-while
がよく使われます。」
新人
「ループ文って何ですか?どんなときに使うんですか?」
先輩
「それでは、ループの基本から説明していきますね!」
1. ループとは?
ループとは、プログラム内で同じ処理を繰り返す仕組みのことです。例えば、10回「こんにちは!」と表示したいとき、同じecho
文を10回書くのは面倒ですよね?
そんなときに、ループを使うと、短いコードで繰り返し処理が実現できます。
ループを使わない場合
<?php
echo "こんにちは!";
echo "こんにちは!";
echo "こんにちは!";
echo "こんにちは!";
echo "こんにちは!";
?>
出力結果:
こんにちは!
こんにちは!
こんにちは!
こんにちは!
こんにちは!
このように、同じ処理を何度も書くのは効率が悪いです。そこで、ループを使うと以下のように簡単に書けます。
<?php
for ($i = 0; $i < 5; $i++) {
echo "こんにちは!";
}
?>
出力結果:
こんにちは!
こんにちは!
こんにちは!
こんにちは!
こんにちは!
このように、ループを使うことで、短いコードで同じ処理を繰り返すことができます。
2. forループの使い方(基本的な例と仕組み)
for
ループは、決まった回数だけ繰り返したいときに便利です。基本的な構文は次のようになります。
<?php
for (初期化; 条件; 増減) {
// 繰り返し処理
}
?>
具体的に、1から5までの数字を順番に表示するコードを見てみましょう。
<?php
for ($i = 1; $i <= 5; $i++) {
echo "現在のカウント: " . $i . "<br>";
}
?>
出力結果:
現在のカウント: 1
現在のカウント: 2
現在のカウント: 3
現在のカウント: 4
現在のカウント: 5
forループの各部分の説明
- 初期化 - ループが始まるときに、最初に実行する処理(例:
$i = 1
) - 条件 - ループを続けるかどうかを判断する条件(例:
$i <= 5
) - 増減 - ループが1回終わるごとに実行する処理(例:
$i++
)
forループの活用例
例えば、商品の一覧を10個表示する場合は次のように書けます。
<?php
for ($i = 1; $i <= 10; $i++) {
echo "商品" . $i . "を表示<br>";
}
?>
出力結果:
商品1を表示
商品2を表示
商品3を表示
商品4を表示
商品5を表示
商品6を表示
商品7を表示
商品8を表示
商品9を表示
商品10を表示
このように、forループを使うことで、リストや表のデータを簡単に作成することができます。
3. whileループの使い方(繰り返し処理を理解する)
while
ループは、特定の条件が満たされている間、処理を繰り返すループです。
例えば、「条件が満たされるまでループを続ける」というような処理に使います。
whileループの基本構文
<?php
while (条件) {
// 繰り返し処理
}
?>
具体的に、1から5までの数字を順番に表示するコードを見てみましょう。
<?php
$i = 1;
while ($i <= 5) {
echo "現在のカウント: " . $i . "<br>";
$i++;
}
?>
出力結果:
現在のカウント: 1
現在のカウント: 2
現在のカウント: 3
現在のカウント: 4
現在のカウント: 5
while
ループでは、条件が満たされている間、処理を実行し続けます。
条件がfalse
になるとループが終了します。
4. do-whileループの使い方(whileとの違い)
do-while
ループは、必ず1回は処理を実行してから、条件をチェックするループです。
つまり、条件がfalse
であっても、少なくとも1回は処理が実行されます。
do-whileループの基本構文
<?php
do {
// 繰り返し処理
} while (条件);
?>
以下の例では、カウントを1から5まで表示します。
<?php
$i = 1;
do {
echo "現在のカウント: " . $i . "<br>";
$i++;
} while ($i <= 5);
?>
出力結果:
現在のカウント: 1
現在のカウント: 2
現在のカウント: 3
現在のカウント: 4
現在のカウント: 5
このコードでは、条件を満たしている間、処理が実行されますが、do
ブロックの処理は必ず1回実行されます。
whileとdo-whileの違い
違いを比較するために、初期値を6に設定した場合を見てみましょう。
whileループの場合
<?php
$i = 6;
while ($i <= 5) {
echo "現在のカウント: " . $i . "<br>";
$i++;
}
?>
出力結果:
(何も出力されません)
do-whileループの場合
<?php
$i = 6;
do {
echo "現在のカウント: " . $i . "<br>";
$i++;
} while ($i <= 5);
?>
出力結果:
現在のカウント: 6
このように、do-while
ループは、条件に関係なく必ず1回は処理を実行します。
5. for, while, do-whileの使い分け(どのような場面で使うべきか)
どのループを使えばよいか迷ったときは、次の基準で判断すると良いでしょう。
forループを使う場合
繰り返す回数が決まっているとき。
例:1から10までの数を表示
<?php
for ($i = 1; $i <= 10; $i++) {
echo $i . "<br>";
}
?>
whileループを使う場合
条件が満たされている間だけ処理を繰り返したいとき。
例:ユーザーが入力した数が10未満なら繰り返す
<?php
$number = 1;
while ($number < 10) {
echo $number . "<br>";
$number++;
}
?>
do-whileループを使う場合
少なくとも1回は処理を実行したいとき。
例:最低1回は入力を求める
<?php
do {
echo "1回は実行されます!<br>";
} while (false);
?>
ループの選び方まとめ
ループの種類 | 特徴 | 適した場面 |
---|---|---|
forループ | 決まった回数だけ繰り返す | 配列の要素を順番に処理するとき |
whileループ | 条件が満たされている間繰り返す | ユーザーの入力を待つとき |
do-whileループ | 必ず1回は実行される | メニュー表示や入力チェック |
これで、PHPのループの使い分けについて理解できましたね!
6. ループのネスト(入れ子構造)を使う方法
ループのネスト(入れ子構造)とは、ループの中に別のループを入れることです。
例えば、2重ループを使うことで、表のデータを出力する処理や、九九の表を作ることができます。
2重ループの基本構文
<?php
for ($i = 1; $i <= 3; $i++) {
for ($j = 1; $j <= 3; $j++) {
echo "i=$i, j=$j <br>";
}
}
?>
出力結果:
i=1, j=1
i=1, j=2
i=1, j=3
i=2, j=1
i=2, j=2
i=2, j=3
i=3, j=1
i=3, j=2
i=3, j=3
九九の表を作る
ネストされたループを使って、九九の表を作ってみましょう。
<?php
for ($i = 1; $i <= 9; $i++) {
for ($j = 1; $j <= 9; $j++) {
echo $i * $j . " ";
}
echo "<br>";
}
?>
出力結果:
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
7. ループ処理を活用した実践的なコード(配列のデータを繰り返し処理)
PHPではループを使って配列のデータを繰り返し処理することがよくあります。
forループを使った配列処理
<?php
$fruits = ["りんご", "バナナ", "オレンジ"];
for ($i = 0; $i < count($fruits); $i++) {
echo "フルーツ: " . $fruits[$i] . "<br>";
}
?>
出力結果:
フルーツ: りんご
フルーツ: バナナ
フルーツ: オレンジ
foreachループを使った配列処理
PHPでは、配列を処理するためにforeach
ループが便利です。
<?php
$fruits = ["りんご", "バナナ", "オレンジ"];
foreach ($fruits as $fruit) {
echo "フルーツ: " . $fruit . "<br>";
}
?>
出力結果:
フルーツ: りんご
フルーツ: バナナ
フルーツ: オレンジ
連想配列のデータを繰り返し処理
キーと値を持つ連想配列を処理する場合もforeach
が使えます。
<?php
$prices = [
"りんご" => 150,
"バナナ" => 100,
"オレンジ" => 120
];
foreach ($prices as $fruit => $price) {
echo $fruit . "の価格は" . $price . "円です。<br>";
}
?>
出力結果:
りんごの価格は150円です。
バナナの価格は100円です。
オレンジの価格は120円です。
8. PHPのループを学ぶための練習問題
最後に、ループの理解を深めるための練習問題をいくつか用意しました。
問題1: 1から10までの偶数を表示する
forループを使って、1から10までの偶数を出力するプログラムを作成してください。
<?php
for ($i = 2; $i <= 10; $i += 2) {
echo $i . "<br>";
}
?>
問題2: whileループで1から5までの合計を求める
whileループを使って、1から5までの数の合計を求めてください。
<?php
$sum = 0;
$i = 1;
while ($i <= 5) {
$sum += $i;
$i++;
}
echo "合計: " . $sum;
?>
問題3: do-whileループでユーザーが「終了」と入力するまでメッセージを表示する
do-whileループを使って、「終了」と入力されるまでメッセージを表示してください。
<?php
do {
$input = readline("メッセージを入力(終了するには「終了」と入力): ");
echo "入力されたメッセージ: " . $input . "\n";
} while ($input !== "終了");
?>
まとめ
ここまで、PHPのループの使い方を学んできました。
- forループ:決まった回数の繰り返しに適している
- whileループ:条件が満たされる間繰り返す
- do-whileループ:最低1回は実行される
- ネスト(入れ子)ループ:二重ループを使って表などを作成
- 配列とループ:forループやforeachを活用
これで、PHPの繰り返し処理をしっかり理解できましたね!