PHPのfor, while, do-whileループの使い方を完全ガイド!初心者でもわかる繰り返し処理
新人
「PHPで同じ処理を何回も繰り返す方法はありますか?」
先輩
「はい、PHPには繰り返し処理を行うためのループ文があります。特にfor、while、do-whileがよく使われます。」
新人
「ループ文って何ですか?どんなときに使うんですか?」
先輩
「それでは、ループの基本から説明していきますね!」
1. ループとは?
ループとは、PHPなどのプログラム内で「同じ処理を何度も繰り返す」ための仕組みです。例えば、10回「こんにちは!」と画面に表示したいとき、同じechoを10行書くのは手間ですよね。
そんなときにループを使うと、回数や条件を指定するだけで、同じ処理をまとめて実行できます。コードが短くなり、修正もしやすくなるのが大きなメリットです。
特に初心者のうちは「同じ文章を何回も出したい」「番号を1から順に表示したい」といった場面で、ループの考え方が役立ちます。
ループを使わない場合
<?php
echo "こんにちは!";
echo "こんにちは!";
echo "こんにちは!";
echo "こんにちは!";
echo "こんにちは!";
?>
出力結果:
こんにちは!
こんにちは!
こんにちは!
こんにちは!
こんにちは!
このように、同じ処理を何度も書くのは効率が悪いです。回数を変えたくなったとき(例:5回→10回)も、行を増やしたり減らしたりする必要があり、ミスの原因にもなります。
そこでループを使うと、繰り返し回数を数字で管理でき、スッキリ書けます。
<?php
for ($i = 0; $i < 5; $i++) {
echo "こんにちは!";
}
?>
出力結果:
こんにちは!
こんにちは!
こんにちは!
こんにちは!
こんにちは!
この例では、$iという変数が「今何回目か」を数える役割をしています。$iが0から始まり、1回処理するたびに増えていき、5回分繰り返したところで止まります。
最初は「決めた回数だけ繰り返す」だけ覚えればOKです。慣れてくると、配列の要素を順番に処理したり、同じ形式の表示を作ったりする場面でも自然に使えるようになります。
初心者向け:番号をつけて表示してみよう
「何回目の表示なのか」を一緒に出すと、ループの動きがイメージしやすくなります。
<?php
for ($i = 1; $i <= 5; $i++) {
echo $i . "回目のこんにちは!<br>";
}
?>
出力結果:
1回目のこんにちは!
2回目のこんにちは!
3回目のこんにちは!
4回目のこんにちは!
5回目のこんにちは!
このように、ループを使うことで、短いコードで同じ処理を繰り返すことができます。
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のループについて整理
ここまで、PHPのループの使い方を学んできました。
- forループ:決まった回数の繰り返しに適している
- whileループ:条件が満たされる間繰り返す
- do-whileループ:最低1回は実行される
- ネスト(入れ子)ループ:二重ループを使って表などを作成
- 配列とループ:forループやforeachを活用
これで、PHPの繰り返し処理をしっかり理解できましたね!
まとめ
ここまで、PHPで繰り返し処理を行うためのfor文、while文、do-while文について、基本構文から具体例、実践的な使い方までをじっくり学んできました。プログラムの中で同じ処理を何度も繰り返したい場面は多く、ループはその代表的な手段です。
forループは「繰り返す回数が決まっている」ときに最もよく使われます。たとえば、1から10までの数字を表示したい場合や、商品の一覧を作成したい場合に便利です。一方、whileループは「繰り返す条件が明確なとき」に活躍します。ユーザーの入力が特定の値になるまで繰り返す処理などに適しています。
do-whileループの最大の特徴は、「最低1回は処理が実行される」ことです。条件に関わらず最初の1回は必ず通るため、入力フォームの初期表示やメニュー画面の初回表示などに役立ちます。こうした使い分けをしっかり理解しておくと、今後のプログラミングに大いに役立つでしょう。
また、ループ処理は配列と組み合わせることで力を発揮します。配列の要素を順番に取り出す処理では、for文とforeach文のどちらも使用可能ですが、特にforeach文はコードがシンプルになり、可読性が高まります。連想配列においては、キーと値を同時に扱えるforeachが非常に便利です。
さらに、ループの中にループを入れる「ネスト(入れ子)構造」も重要な技術です。たとえば九九の表を作成したり、表形式のデータを出力するような処理で活用されます。ただし、ネストが深くなりすぎるとコードが読みにくくなるため、構造を整理して記述する工夫も必要です。
サンプル:forループで1から10までの偶数だけを表示
<?php
for ($i = 1; $i <= 10; $i++) {
if ($i % 2 === 0) {
echo $i . "<br>";
}
}
?>
出力結果:
2
4
6
8
10
繰り返し処理は、日常的なタスクを自動化したり、複雑なデータ処理を簡潔に記述するために欠かせない考え方です。PHPのループ構文を理解することで、データを一覧表示したり、条件付きで繰り返す処理を自信をもって書けるようになります。また、ループの中に条件分岐を組み合わせることで、さらに柔軟な処理が可能になります。たとえば、偶数だけを表示したい、特定の値をスキップしたいなど、現実のニーズに合わせた細かな制御も簡単に実現できるようになります。
さらに、foreachループを使えば、配列の要素を一つずつ丁寧に扱うことができ、特に連想配列のようにキーと値のペアで管理されたデータの処理にとても適しています。実際の業務でもデータベースから取得したレコードや、フォーム入力のチェックなど、ループ処理が必要となる場面は数多くあります。
新人
「for文とwhile文の違いがようやくわかってきました!条件で制御するか、回数で制御するかって大事なんですね。」
先輩
「その通り!そしてdo-while文のように必ず1回実行される構造も、使いどころを押さえればとても便利です。」
新人
「foreach文も便利ですね。連想配列の中身を扱うのがすごく簡単に感じました!」
先輩
「foreachは配列処理の強い味方だよ。実際の開発でも頻繁に使うから、今のうちにしっかり身につけよう!」