PHPで2次元配列をTABLE表示

(1/1)
PHPでクラウド連携プログラムを作るときなど、データを2次元配列に入れてから処理することが多い。プログラムの動作検証をする際、その配列の内容を簡単に見ることができると便利だ。
そこで今回は、連想配列を含む2次元配列の内容を、HTMLのTABLEタグとして表示するプログラムをつくることにする。

(2021年5月12日)PHP8対応,リファラ・チェック追加

サンプル・プログラムの実行例

PHPで2次元配列をTABLE表示

目次

サンプル・プログラム

圧縮ファイルの内容
array2table.phpサンプル・プログラム本体。
このプログラムは、連想配列を含む2次元配列専用である。

準備

  36: //TABLEの横幅(ピクセル)
  37: define('TABLE_WIDTH', 600);
  38: 
  39: //2次元配列
  40: $Items = array(
  41: array(
  42:     'year'      => 2015,
  43:     'month'     => 12,
  44:     'day'       => 27,
  45:     'weather'   => '晴時々曇',
  46:     'max_temp'  => 11,
  47:     'min_temp'  => 5
  48: ), array(
  49:     'year'      => 2015,
  50:     'month'     => 12,
  51:     'day'       => 28,
  52:     'weather'   => '晴時々曇',
  53:     'max_temp'  => 9,
  54:     'min_temp'  => 0
  55: ), array(
  56:     'year'      => 2015,
  57:     'month'     => 12,
  58:     'day'       => 29,
  59:     'weather'   => '晴時々曇',
  60:     'max_temp'  => 10,
  61:     'min_temp'  => 3
  62: ), array(
  63:     'year'      => 2015,
  64:     'month'     => 12,
  65:     'day'       => 30,
  66:     'weather'   => '曇',
  67:     'max_temp'  => 9,
  68:     'min_temp'  => 2
  69: ), array(
  70:     'year'      => 2015,
  71:     'month'     => 12,
  72:     'day'       => 31,
  73:     'weather'   => '晴のち曇',
  74:     'max_temp'  => 12,
  75:     'min_temp'  => 3
  76: ), array(
  77:     'year'      => 2016,
  78:     'month'     => 1,
  79:     'day'       => 1,
  80:     'weather'   => '晴',
  81:     'max_temp'  => 11,
  82:     'min_temp'  => 5
  83: ));

表示するTABLEの幅を定数 TABLE_WIDTH に、2次元配列を $Items に用意する。

解説:TABLE変換

 164: /**
 165:  * 2次元配列をTABLE変換
 166:  * @param   array $arr 2次元配列
 167:  * @return  string HTMLコンテンツ/FALSE:エラー
 168: */
 169: function array2table($arr) {
 170:     if (!is_array($arr))    return FALSE;           //配列がない
 171:     $keys1 = array_keys($arr);                      //1次元目のキー取得
 172:     $keys2 = array_keys($arr[$keys1[0]]);           //2時限目のキー取得
 173:     if (is_array($arr[$keys1[0]][$keys2[0]]))   return FALSE;   //3次元以上
 174: 
 175:     $n = count($arr[$keys1[0]]) ;               //要素の数
 176:     $html = "<table class=\"array\">\n";
 177: 
 178:     //要素名
 179:     $html ."<tr><th>Key</th>";
 180:     for ($i = 0$i < $n$i++) {
 181:         $html ."<th>{$keys2[$i]}</th>";
 182:     }
 183:     $html ."</tr>\n";
 184: 
 185:     //配列本体
 186:     foreach ($arr as $key=>$arr1) {
 187:         $html ."<tr><th>{$key}</th>";
 188:         for ($i = 0$i < $n$i++) {
 189:             $html ."<td>{$arr1[$keys2[$i]]}</td>";
 190:         }
 191:     }
 192:     $html ."</tr>\n</table>\n";
 193: 
 194:     return $html;
 195: }

ユーザー関数 array2table は、2次元配列をTABLEに変換するものだ。

最初に、引数として与えた2次元配列 $arr の属性をチェックする。
配列の内容が空だったり、3次元以上の場合はエラーとして FALSE を返す。
また、要素名を組み込み関数  array_keys  を使って取り出しておく。

次に、1次元目の要素をTABLEの並べる。
そして、配列本体を並べてゆく。

参考サイト

(この項おわり)
header