[php] 入れ子になっている連想配列をtableで表示

入れ子になっている連想配列をtableで表示するには以下の関数を使用するとtableで表示してくれます。4次元目まで表示することができるようになっています。

参考:PHPで2次元配列をTABLE表示

 

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です