------------------------------------------------------------ ROWSPAN-HTML TABLEバージョン ------------------------------------------------------------ 0) { $rowspanMap[$startIndex] = $count; } $count = 1; $startIndex = $i; $prev = $key; } else { $count++; } } if ($count > 0) { $rowspanMap[$startIndex] = $count; } return $rowspanMap; } // 各列のrowspanを計算 $colCount = 4; $rowspanData = []; for ($col = 0; $col < $colCount; $col++) { $rowspanData[$col] = calculateRowspan($data, $col); } var_dump($rowspanData); // HTMLテーブル出力 echo ""; echo "\n"; echo "\n"; for ($i = 0; $i < count($data); $i++) { echo ""; for ($col = 0; $col < $colCount; $col++) { $value = htmlspecialchars($data[$i][$col]); if (isset($rowspanData[$col][$i])) { $rowspan = $rowspanData[$col][$i]; echo ""; } elseif (!array_key_exists($i, $rowspanData[$col])) { // skip cell (すでにrowspanで出力されたセルなので何もしない) continue; } } echo "\n"; } echo "
分類1分類2分類3分類4
$value
"; echo ""; ?> ------------------------------------------------------------ 罫線使用バージョン ------------------------------------------------------------ $key) { $isLast = ($i === $count - 1); $branch = $isLast ? '└── ' : '├── '; echo $prefix . $branch . $key . PHP_EOL; $nextPrefix = $prefix . ($isLast ? ' ' : '│ '); printTree($tree[$key], $nextPrefix); } } // 実行 printTree($tree); ------------------------------------------------------------