【6日でできるPHP入門】for文の2重ループ

プログラミングの学習が進むと「繰り返し処理(ループ)」は避けて通れません。
 その中でも「for文の2重ループ(ネストされたfor文)」は、二次元的なデータ処理や表の作成、組み合わせの列挙など、幅広い場面で活用されます。
この記事では、for文の2重ループについて、表やサンプルを交えて具体的に解説します。

1.for文の2重ループとは

1.1. 2重ループの基本構造

 2重ループ(ネストされたfor文)とは、for文の中にさらにfor文を記述し、外側のループごとに内側のループがすべて繰り返される構造です。

外側のループ ($i)内側のループ ($j)合計繰り返し回数
3回2回3 × 2 = 6回
5回5回5 × 5 = 25回

基本の書き方

for ($i = 1; $i <= 3; $i++) {
    for ($j = 1; $j <= 2; $j++) {
        // ここに繰り返し処理を書く
    }
}

1.2. 2重ループの利用シーン

2重ループは次のような場面でよく使われます。

シーン例説明
表・マトリックス二次元配列や九九表などの作成に使われる。
組み合わせの列挙すべてのパターンを出力したいとき
ゲーム・シミュレーショングリッド上の移動や判定処理

2.具体的なPHPサンプル

2.1. 九九表の作成サンプル

九九のような掛け算表を作ることで、2重ループの働きを理解できます。

ファイル名: lesson34_1.php

<?php
for ($dan = 1; $dan <= 9; $dan++) {
    for ($ku = 1; $ku <= 9; $ku++) {
        $result = $dan * $ku;
        echo "{$dan}×{$ku}={$result}  ";
    }
    echo "<br>";
}
?>

実行結果

2.2. 行と列を表にするサンプル

次は行番号と列番号を組み合わせて、テーブル(表)を作る例です。

ファイル名: lesson34_2.php

<?php
echo "<table border='1'>";
for ($row = 1; $row <= 3; $row++) {
    echo "<tr>";
    for ($col = 1; $col <= 4; $col++) {
        echo "<td>{$row}行{$col}列</td>";
    }
    echo "</tr>";
}
echo "</table>";
?>

実行結果

3.2重ループとHTML特殊文字

PHPでHTMLを出力する際、特殊文字を使う場面があります。

表示される文字HTML特殊文字
半角スペース&nbsp;
<&lt;
>&gt;
&&amp;
"&quot;

4.for文の2重ループのポイント

  • 外側ループが1回まわるごとに、内側ループが全回数まわる
  • 2重にすることで、行・列など2軸のデータを自然に扱える。
  • PHPのループ処理の基本をしっかり理解しておくと応用がきく。

まとめ

 for文の2重ループは、二次元的な繰り返し処理や表の作成などで非常に役立つテクニックです。サンプルプログラムを色々と試し、値や条件を変えて挙動を観察することで、実践力を身につけましょう。