Здесь код для создания динамического столбца и данных любой длины,
Разбить на 5 групп и сделать это как значение столбца. Отработанный выход ниже
<?php
//$row=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
$row=array('aaa','bbbb','cccc','ddddd','eeeee','ffff','gggg','hhhh','iiii','jjjjj','kkkk','llll','mmmm','nnnnn','ooooo');
?>
<table style="width:50%">
<?php
echo'<tr>';
$i=0;
foreach ($row as $key => $value) {
if(($key)%5==0)
{
$i++;
echo'<th>Col'.$i.'</th>';
}
$a[$i][]=$value;
}
echo'</tr>';
$forcount=count($a);
$innerforcount=count($a[1]);
for ($j=0; $j <$innerforcount ; $j++) {
echo'<tr>';
for($i=1;$i<=$forcount;$i++)
echo'<td>'.$a[$i][$j].'</td>';
echo"</tr>";
}
?>
</table>
// Вывод
Col1 Col2 Col3 Col4
1 6 11 16
2 7 12 17
3 8 13 18
4 9 14 19
5 10 15 20
// Пример с текстом
Col1 Col2 Col3
aaa ffff kkkk
bbbb gggg llll
cccc hhhh mmmm
ddddd iiii nnnnn
eeeee jjjjj ooooo