[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;
}