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

サンプル・プログラム
array2table.php | サンプル・プログラム本体。 |
準備
  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変換
 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: }

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

次に、1次元目の要素をTABLEの並べる。
そして、配列本体を並べてゆく。
参考サイト
- 配列:PHP公式
- PHPの配列はJavaのHashMapに近いかも:ギジュツメモ
- 【PHP】多次元配列の子要素をカウント:Web製作とAndroid開発のメモ
そこで今回は、連想配列を含む2次元配列の内容を、HTMLのTABLEタグとして表示するプログラムをつくることにする。
(2021年5月12日)PHP8対応,リファラ・チェック追加