カテゴリ: PHP 更新日: 2026/01/08

PHPのfor, while, do-whileループの使い方を完全ガイド!初心者でもわかる繰り返し処理

PHP の for, while, do-while ループの使い方
PHP の for, while, do-while ループの使い方

新人と先輩の会話形式で理解しよう

新人

「PHPで同じ処理を何回も繰り返す方法はありますか?」

先輩

「はい、PHPには繰り返し処理を行うためのループ文があります。特にforwhiledo-whileがよく使われます。」

新人

「ループ文って何ですか?どんなときに使うんですか?」

先輩

「それでは、ループの基本から説明していきますね!」

-

1. ループとは?

1. ループとは?
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ループの使い方(基本的な例と仕組み)

2. forループの使い方(基本的な例と仕組み)
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ループの使い方(繰り返し処理を理解する)

3. whileループの使い方(繰り返し処理を理解する)
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との違い)

4. do-whileループの使い方(whileとの違い)
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の使い分け(どのような場面で使うべきか)

5. for, while, do-whileの使い分け(どのような場面で使うべきか)
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. ループのネスト(入れ子構造)を使う方法

6. ループのネスト(入れ子構造)を使う方法
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. ループ処理を活用した実践的なコード(配列のデータを繰り返し処理)

7. ループ処理を活用した実践的なコード(配列のデータを繰り返し処理)
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のループを学ぶための練習問題

8. PHPのループを学ぶための練習問題
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は配列処理の強い味方だよ。実際の開発でも頻繁に使うから、今のうちにしっかり身につけよう!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

PHPでforループを使って繰り返し処理を行うには、どんな構文を使いますか?

PHPのforループでは、初期化、条件、増減を指定して処理を繰り返します。構文としては「for (初期化; 条件; 増減)」の形で書きます。繰り返したい回数が決まっている場合に最適です。

foreachの中で元の配列を変更するにはどうすればよいですか?

参照渡し(&)を使ってforeach ($配列 as &$値)と記述すれば、元の配列の内容も変更できます。

配列が空の場合、foreachループはどうなりますか?

何も実行されません。ループは0回実行されるので、安全にそのまま使用できます。

forループとwhileループの処理速度に違いはありますか?

基本的な処理速度には大差はありませんが、繰り返し回数が多い場合や条件の計算に影響されることがあります。

多重ループのパフォーマンスに影響はありますか?

はい、ループの回数が増えるほど処理負荷も増えるため、最適化が必要になります。

foreachとfor、どちらが高速ですか?

一般的にforeachの方が若干高速でメモリ効率も良いとされますが、ケースによります。

PHPのループ処理で出力結果を整形するにはどうすればよいですか?

文字列結合や改行コード、HTMLタグを組み合わせて整形出力を行います。

PHPのループの中で文字列を改行したいときはどうしますか?

echoに改行タグ(<br>)やPHPの改行コード(\n)を使えば、ループで改行付きの出力が可能です。

ループ処理で変数のスコープに注意すべき理由はありますか?

変数の定義場所によっては意図しない値が残ることがあるため、ループ外とループ内でのスコープ管理が重要です。

PHPのforループで後ろから前にカウントダウンすることはできますか?

はい、$i--のように減少させることで逆順のループ処理が可能です。

配列の値を合計する処理をループで行うにはどうすればいいですか?

初期値0の変数を用意して、ループ内で1つずつ加算していく方法が一般的です。

ループの中で関数を呼び出すことはできますか?

はい、ループ内で必要に応じて関数を呼び出して処理を行うことができます。

foreachループと配列ポインタを組み合わせることは可能ですか?

基本的にforeachは配列ポインタに依存しないため、他の配列関数との併用時は注意が必要です。

PHPでループ処理の結果を1つの文字列にまとめる方法はありますか?

繰り返し処理の中で文字列を連結することで、最終的に1つの大きな文字列にまとめることが可能です。

PHPのループで配列の中身をすべて表示するにはどんな方法がありますか?

foreachやforループを使って、配列のすべての要素を1つずつ取り出して表示するのが一般的な方法です。

ループ処理の中でHTMLのクラス名やIDを動的に変えるにはどうすればいいですか?

変数を使ってクラス名やIDをループごとに生成すれば、ユニークな属性を動的に付与できます。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
PHP
PHPのCookieセキュリティを完全ガイド!初心者でもわかるSecureとHttpOnlyの使い方
New2
PHP
PHPのCSRF対策を完全理解!トークンを使った安全なフォーム送信の仕組みを初心者向けに徹底解説
New3
PHP
PHPのSQLインジェクション対策を完全解説!初心者でも安全にデータベースを扱う方法
New4
PHP
PHPでカウントダウンタイマーを作る方法!初心者向けにやさしく解説
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.2
Java&Spring記事人気No2
PHP
初心者向けPHPでMySQLからデータを取得する方法(SELECT文)完全ガイド
No.3
Java&Spring記事人気No3
Python
Pythonのリストの重複を削除する方法を解説!初心者向けにsetとdict.fromkeysの使い方をやさしく説明
No.4
Java&Spring記事人気No4
Python
Pythonで経過時間を測る方法をやさしく解説!初心者向けtime.perf_counterとtime.sleepの使い方
No.5
Java&Spring記事人気No5
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
No.6
Java&Spring記事人気No6
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.7
Java&Spring記事人気No7
PHP
PHPのOAuth認証をやさしく解説!Google・Facebookログインを初心者向けに実装しよう
No.8
Java&Spring記事人気No8
PHP
PHPでZipファイルを作成・展開する方法を初心者向けに解説!ZipArchiveクラスを使った圧縮・解凍の基本
-
-