【6日でできるPHP入門】PHPでテーブルを生成する

 Webアプリケーション開発では、データを見やすく一覧表示する機能が欠かせません。PHPを使うと、配列などのデータから動的にHTMLテーブル(表)を生成することができます。本記事では、PHPでテーブルを作成する基礎から実践までを、サンプルコードと共に解説します。

1.PHPでHTMLテーブルを生成する仕組み

1.1. テーブル生成の基本

 HTMLのテーブルは、<table>, <tr>, <th>, <td>タグで構成されます。PHPではこれらのタグをechoで出力するか、ヒアドキュメントを利用して出力することで、配列から表を作れます。

タグ役割
<table>テーブル全体を囲む
<tr>行を表す
<th>見出しセル
<td>データセル

1.2. 多次元配列を使う理由

テーブルの各行には複数の項目があるため、多次元配列を使うと表データの管理が容易です。
例:商品一覧

$products = [
  ["パソコン", "150,000円", 8, "2024-07-01"],
  ["タブレット", "60,000円", 20, "2023-11-18"],
  ["ヘッドホン", "12,000円", 50, "2024-03-05"]
];

各商品の情報が1行分ずつ格納されています。

2.サンプル:PHPで商品一覧テーブルを生成

サンプルプログラム

ファイル名: lesson42_1.html

<!DOCTYPE html>
<html>
<head>
  <title>商品一覧テーブルのサンプル</title>
  <meta charset="UTF-8">
</head>
<body>
  <h1>商品一覧テーブルのサンプル</h1>
  <table border="1" style="border-collapse:collapse">
    <tr>
      <th>商品名</th><th>価格</th><th>在庫数</th><th>発売日</th>
    </tr>
    <?php
    $products = [
      ["パソコン", "150,000円", 8, "2024-07-01"],
      ["タブレット", "60,000円", 20, "2023-11-18"],
      ["ヘッドホン", "12,000円", 50, "2024-03-05"]
    ];
    foreach ($products as $item) {
      echo "<tr>";
      echo "<td>{$item[0]}</td><td>{$item[1]}</td><td>{$item[2]}</td><td>{$item[3]}</td>";
      echo "</tr>";
    }
    ?>
  </table>
</body>
</html>

実行結果

商品名価格在庫数発売日
パソコン150,000円82024-07-01
タブレット60,000円202023-11-18
ヘッドホン12,000円502024-03-05

2.3. プログラム詳細解説

  • 多次元配列$productsに各商品のデータを格納
  • foreachで1件ずつ取り出し、<tr>内に各データを出力
  • <th>でヘッダー行を明示し、列の意味が分かりやすい

3.ヒアドキュメントを使ったテーブル出力

3.1. ヒアドキュメントの例

可読性を高めるため、ヒアドキュメント構文を利用できます。

ファイル名: lesson42_2.php

<!DOCTYPE html>
<html>
<head>
  <title>商品一覧テーブルのサンプル</title>
  <meta charset="UTF-8">
</head>
<body>
  <h1>商品一覧テーブルのサンプル</h1>
  <table border="1" style="border-collapse:collapse">
    <tr>
      <th>商品名</th><th>価格</th><th>在庫数</th><th>発売日</th>
    </tr>
    <?php
    $products = [
      ["パソコン", "150,000円", 8, "2024-07-01"],
      ["タブレット", "60,000円", 20, "2023-11-18"],
      ["ヘッドホン", "12,000円", 50, "2024-03-05"]
    ];
    foreach ($products as $p) {
      echo <<<HTML
    <tr>
      <td>{$p[0]}</td><td>{$p[1]}</td><td>{$p[2]}</td><td>{$p[3]}</td>
    </tr>
HTML;
    }
    ?>
  </table>
</body>
</html>

ヒアドキュメントなら、変数展開も自動で行われ、HTMLタグもインデントしやすくなります。

実行結果

ポイント

  • <table>~</table> でテーブル全体を囲む。
  • 最初に <tr><th>…</th>…</tr> でヘッダー(列名)を明記
  • 各商品のデータ行は foreachで出力
  • HTMLのインデントは、ヒアドキュメント開始位置と揃えるときれいに表示されます。

4.テーブル生成の応用例

4.1. 配列の内容によってセルを色分けする例

PHPで条件分岐を加えることで、「在庫数が少ない商品だけ色を変える」などのカスタマイズも可能です。

foreach ($products as $item) {
  $style = ($item[2] < 10) ? " style='background:pink'" : "";
  echo "<tr>";
  echo "<td>{$item[0]}</td><td>{$item[1]}</td><td{$style}>{$item[2]}</td><td>{$item[3]}</td>";
  echo "</tr>";
}

4.2. 連想配列で柔軟なテーブル生成

連想配列を使えば、見出し名と値の紐付けも明確になります。

ファイル名: lesson42_3.php

<!DOCTYPE html>
<html>
<head>
  <title>商品一覧テーブルのサンプル</title>
  <meta charset="UTF-8">
</head>
<body>
  <h1>商品一覧テーブルのサンプル</h1>
  <table border="1" style="border-collapse:collapse">
    <tr>
      <th>商品名</th>
      <th>価格</th>
      <th>在庫数</th>
      <th>発売日</th>
    </tr>
    <?php
    $products = [
      ["商品名"=>"パソコン", "価格"=>"150,000円", "在庫数"=>8, "発売日"=>"2024-07-01"],
      ["商品名"=>"タブレット", "価格"=>"60,000円", "在庫数"=>20, "発売日"=>"2023-11-18"],
      ["商品名"=>"ヘッドホン", "価格"=>"12,000円", "在庫数"=>50, "発売日"=>"2024-03-05"]
    ];
    foreach ($products as $row) {
      echo "<tr>";
      foreach ($row as $v) {
        echo "<td>$v</td>";
      }
      echo "</tr>";
    }
    ?>
  </table>
</body>
</html>

実行結果

まとめ

  • PHPを使うことで、配列からHTMLテーブルを動的に生成できる。
  • 多次元配列を使えば、テーブルの行と列を柔軟に管理可能
  • foreach文やヒアドキュメントを使い、見やすいソースコードにできる。
  • 応用として連想配列や条件付き出力も実装可能

 実際の業務や学習では、データベースやファイルから読み込んだデータをテーブルで表示する場面が多くなります。まずはPHP配列×テーブル生成から始めて、ステップアップしてみましょう。