6-6 PHPで繰り返し処理(for / foreach)

Web開発学習ロードマップ

これまでの記事で、
PHPの基本文法、変数、条件分岐を学んできました。

しかし実際のWeb開発では、

・同じ処理を何度も行う
・配列の中身を順番に表示する
・データ一覧を作る

といった 繰り返し処理 が頻繁に登場します。

そこで使われるのが、

・for
・foreach

です。

この記事では、
PHPでの繰り返し処理の考え方と使い分け
実際に動くコードで理解していきます。


この記事で学べること

・繰り返し処理とは何か
・for文の基本的な使い方
・foreach文の基本的な使い方
・for と foreach の使い分け


繰り返し処理とは何か

繰り返し処理とは、
同じ処理を複数回実行する仕組み です。

例えば、

・1〜10までの数字を表示
・配列の要素をすべて表示
・商品一覧を作る

といった場面で使われます。


for文とは何か

for文は、
回数が決まっている繰り返し
に向いている構文です。


for文の基本構造

サンプルコード①:数字を繰り返し表示する

<?php
for ($i = 1; $i <= 5; $i++) {
  echo $i . '<br>';
}

コードの解説

この for 文は、
次の流れで動きます。

  1. $i に 1 を代入

  2. $i が 5 以下か確認

  3. true なら処理を実行

  4. $i を 1 増やす

  5. 再び条件を確認

この流れを繰り返します。


for文でよく使われる用途

for文は、
次のような場面で使われます。

・指定回数のループ
・番号付きリストの生成
・カウンター処理

「何回繰り返すか」が
明確な場合に選びましょう。


foreach文とは何か

foreach文は、
配列の中身を1つずつ取り出す
ための構文です。

PHPでは、
配列処理の多くが
foreach で書かれます。


foreach文の基本構造

サンプルコード②:配列の中身を表示する

<?php
$fruits = ['りんご', 'みかん', 'バナナ'];

foreach ($fruits as $fruit) {
  echo $fruit . '<br>';
}

コードの解説

この foreach 文では、

・$fruits 配列から
・要素を1つずつ取り出し
・$fruit に代入
・中の処理を実行

という流れになります。

配列の数だけ、
自動的に繰り返されます。


foreach文のメリット

foreach の大きなメリットは、

・配列の長さを意識しなくていい
・コードがシンプル
・ミスが起きにくい

という点です。

配列を扱う場合は、
まず foreach を検討
するのが基本です。


配列のキーと値を使う場合

配列には、

・キー
・値

があります。

両方を使いたい場合は、
次の書き方をします。

サンプルコード③:キーと値を使う

<?php
$scores = [
  'math' => 80,
  'english' => 70,
  'science' => 90
];

foreach ($scores as $subject => $score) {
  echo $subject . ':' . $score . '点<br>';
}

コードの解説

この書き方では、

・$subject に キー
・$score に 値

がそれぞれ入ります。

連想配列を扱う場合、
この形は非常によく使われます。


for と foreach の使い分け

使い分けの目安を整理します。

for が向いている場合

・回数が決まっている
・数値を順番に処理したい


・1〜10までの処理
・ページ番号生成


foreach が向いている場合

・配列の中身を処理したい
・要素数が変わる可能性がある


・商品一覧
・ユーザー一覧


無限ループに注意する

繰り返し処理で注意すべき点です。

・条件がずっと true のまま
・終了条件がない

この場合、
処理が終わらなくなります。

特に for 文では、
条件と増減処理
を必ず確認しましょう。


繰り返し処理は実務で多用される

繰り返し処理は、

・データベース結果の表示
・フォームの選択肢生成
・一覧ページ作成

など、
実務でほぼ毎日使われます。

ここでしっかり理解しておくと、
後の学習が非常に楽になります。


まとめ

PHPの繰り返し処理では、

・回数指定 → for
・配列処理 → foreach

という使い分けが基本です。

コードを書いたら、

・何回繰り返すか
・いつ終わるか

を必ず意識しましょう。


次に読むべき記事

▶ 次の記事
6-7 PHPで配列を扱う基本(array / 連想配列)

▶ 関連記事
6-3 PHPの変数とデータ型の基本
6-5 PHPの条件分岐(elseif / switch)

コメント