PHPの二次元配列とは?foreachでHTMLテーブルに表示する方法【初心者向け】

PHPの「配列」を学ぶと、次は「二次元配列」という概念が登場します。これは、一見すると少し複雑に感じるかもしれませんが、ユーザーリストや商品一覧など、実際のWebアプリケーション開発で頻繁に使われる、非常にパワフルなデータ構造です。

今回は、この二次元配列の基本的な仕組みと、そのデータをforeachループを使ってHTMLのテーブルに綺麗に表示する方法を、初心者の方にも分かりやすく解説します。


目次

二次元配列とは? ~配列の中に配列を入れる~

二次元配列とは、その名の通り「配列の要素が、さらに配列になっている」配列のことです。a spreadsheet with rows and columnsの画像

Excelのような表計算ソフトをイメージすると非常に分かりやすいです。

  • 二次元配列全体シート全体
  • 外側の配列の各要素表の各「行」
  • 内側の配列の各要素行の中の各「セル」

例えば、複数のユーザー情報を管理したい場合を考えてみましょう。一人のユーザー情報は「名前」「趣味」「メールアドレス」といったデータを持つ連想配列で表現できます。そして、その連想配列を複数まとめて、一つの配列に入れたものが二次元配列です。

二次元配列の作り方

<?php
// 複数のユーザー情報を格納した二次元配列
$users = [
    [
        "name" => "Taro Sato",
        "hobby" => "Movie",
        "email" => "sato@example.com"
    ],
    [
        "name" => "Jiro Suzuki",
        "hobby" => "Programming",
        "email" => "suzuki@example.com"
    ],
    [
        "name" => "Saburo Takahashi",
        "hobby" => "Reading",
        "email" => "takahashi@example.com"
    ]
];

// 2番目のユーザー(キーは1)の、名前(キーは'name')を取り出す
echo $users[1]["name"]; // 出力: Jiro Suzuki

このように、$配列[行番号][列名] のような形で、特定のデータにアクセスすることができます。


foreachで二次元配列をHTMLテーブルに表示する

二次元配列の最大の利点は、foreachループと組み合わせることで、大量のデータを効率的に処理できる点にあります。ここでは、先ほどの$users配列の中身をHTMLの<table>タグを使って一覧表示してみましょう。

【処理の流れ】

  1. HTMLで<table>タグと見出し行(<th>)を用意する。
  2. foreachで外側の配列($users)をループさせる。ループの各周で、内側の配列(各ユーザーの情報)が一つずつ取り出される。
  3. 取り出した内側の配列($user)から、キーを使って「名前」や「趣味」の値を取得する。
  4. 取得した値を<td>タグに入れて、テーブルの行(<tr>)を生成する。

完成版サンプルコード

<?php
// 複数のユーザー情報を格納した二次元配列
$users = [
    [
        "id" => 1,
        "name" => "Taro Sato",
        "hobby" => "Movie",
        "email" => "sato@example.com"
    ],
    [
        "id" => 2,
        "name" => "Jiro Suzuki",
        "hobby" => "Programming",
        "email" => "suzuki@example.com"
    ],
    [
        "id" => 3,
        "name" => "Saburo Takahashi",
        "hobby" => "Reading",
        "email" => "takahashi@example.com"
    ]
];
?>
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>ユーザーリスト</title>
    <style>
        table { border-collapse: collapse; width: 100%; }
        th, td { border: 1px solid #ccc; padding: 10px; text-align: left; }
        thead { background-color: #f2f2f2; }
    </style>
</head>
<body>
    <h1>ユーザーリスト</h1>
    <table>
        <thead>
            <tr>
                <th>ID</th>
                <th>名前</th>
                <th>趣味</th>
                <th>メールアドレス</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach ($users as $user): ?>
                <tr>
                    <td><?php echo htmlspecialchars($user["id"], ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><?php echo htmlspecialchars($user["name"], ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><?php echo htmlspecialchars($user["hobby"], ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><?php echo htmlspecialchars($user["email"], ENT_QUOTES, 'UTF-8'); ?></td>
                </tr>
            <?php endforeach; ?>
        </tbody>
    </table>
</body>
</html>

foreach ($users as $user) の部分で、$users配列からユーザー情報(内側の連想配列)が一つずつ$user変数に代入されます。ループの中では、その$user配列から$user["name"]のようにして値を取り出し、<td>タグの中に表示しています。

セキュリティのポイント データベースなど外部から取得したデータをHTMLに出力する際は、htmlspecialchars()関数を使ってエスケープ処理を行うのが基本です。これにより、悪意のあるスクリプトが埋め込まれるXSS(クロスサイトスクリプティング)攻撃を防ぐことができます。


まとめ

今回は、二次元配列の概念と、それをforeachループで処理してHTMLのテーブルとして表示する実践的な方法を学びました。

【ポイントの振り返り】

  • 二次元配列は「配列の配列」であり、表形式のデータを管理するのに最適。
  • $配列[行のキー][列のキー]の形で特定のデータにアクセスできる。
  • foreachループと組み合わせることで、二次元配列のデータを効率的に一覧表示できる。

この「二次元配列をforeachでループさせてHTMLを生成する」というパターンは、PHPで動的なWebサイトを構築する上で最も頻繁に使うテクニックの一つです。ぜひマスターして、さまざまなデータの表示に応用してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次