
【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円 | 8 | 2024-07-01 |
タブレット | 60,000円 | 20 | 2023-11-18 |
ヘッドホン | 12,000円 | 50 | 2024-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配列×テーブル生成から始めて、ステップアップしてみましょう。