サンプル・プログラムの実行例
サンプル・プログラム
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対応,リファラ・チェック追加