<?php
$row = array('a','b','c','d','e','f','g','h');
$col_num = 3;// Количество колонок для вывода
$elm_num = count($row);
$row_num = ceil($elm_num / $col_num); //количество рядов
$i = 1; //счетчик начала и окончания ряда;
echo '<table width=\'100%\' cellpadding=\'5\'>'.PHP_EOL;
for ($item = 0; $item < $elm_num; $item++) {
if($i == 1) echo '<tr>';
$idx = ($item % $col_num) * $row_num + floor($item / $col_num);
if ($idx < $elm_num && isset($row[$idx])) {
echo '<td>'.$row[$idx]."</td>".PHP_EOL;
}
if (($item + 1) % $col_num == 0) {
//echo PHP_EOL;
}
if($i == $col_num) {
echo '</tr>'.PHP_EOL;
$i = 1;
} else {
$i++;
}
}
//добиваем таблицу, если элементов меньше
if($i <= $col_num)
{
while($i <= $col_num)
{
echo "<td> </td>".PHP_EOL;
$i++;
}
echo "</tr>".PHP_EOL;
}
echo '</table>'.PHP_EOL;
?>