[php] 入れ子になっている連想配列をtableで表示
入れ子になっている連想配列をtableで表示するには以下の関数を使用するとtableで表示してくれます。4次元目まで表示することができるようになっています。
function array2table($arr) { if (!is_array($arr)) return FALSE; //配列がない $keys1 = array_keys($arr); //1次元目のキー取得 $keys2 = array_keys($arr[$keys1[0]]); //2時限目のキー取得 $n = count($arr[$keys1[0]]) ; //要素の数 $html = "<table class=\"array\" border=\"1\">\n"; //要素名 $html .= "<tr><th>Key</th>"; for ($i = 0; $i < $n; $i++) { $html .= "<th>{$keys2[$i]}</th>"; } $html .= "</tr>\n"; //配列本体 foreach ($arr as $key=>$arr1) { $html .= "<tr><th>{$key}</th>"; for ($i = 0; $i < $n; $i++) { $arr2 = $arr1[$keys2[$i]]; $html .= "<td>"; if(is_array($arr2)){ $keys3 = array_keys($arr2); for ($ii = 0; $ii < count($arr2); $ii++) { $arr3 = $arr2[$keys3[$ii]]; if(is_array($arr3)){ $keys4 = array_keys($arr3); for ($iii = 0; $iii < count($arr3); $iii++) { $arr4 = $arr3[$keys4[$iii]]; if(is_array($arr4)){ $keys5 = array_keys($arr4); for ($iiii = 0; $iiii < count($arr4); $iiii++) { $arr5 = $arr4[$keys5[$iiii]]; if(is_array($arr5)){ $keys6 = array_keys($arr5); for ($iiiii = 0; $iiiii < count($arr5); $iiiii++) { $arr6 = $arr5[$keys6[$iiiii]]; $html .= $keys3[$ii]." : ".$keys4[$iii]." : ".$keys5[$iiii]." : ".$keys6[$iiiii]." : ".$arr6."<br>"; } }else{ $html .= $keys3[$ii]." : ".$keys4[$iii]." : ".$keys5[$iiii]." : ".$arr5."<br>"; } } }else{ $html .= $keys3[$ii]." : ".$keys4[$iii]." : ".$arr4."<br>"; } } }else{ $html .= $keys3[$ii]." : ".$arr3."<br>"; } } }else{ $html .= "{$arr2}"; } $html .= "</td>"; } $html .= "</tr>"; } $html .= "\n</table>\n"; return $html; }