Решение в лоб. Выведет вам любой массив в 4 ряда и n колонок.
для php 5.5+
$arr = range(1, 25);
$chunks = array_chunk($arr, 4);
$rows = array_map(function ($idx) use ($chunks) {
return array_column($chunks, $idx);
}, range(0, 3));
echo implode("<br />", array_map(function ($row){
return implode(', ', $row);
}, $rows));
echo "\n\n";
для php 5.3+
$arr = range(1, 25);
$chunks = array_chunk($arr, 4);
$rows = array_map(function ($idx) use ($chunks) {
// fallback, так как array_column появился только в 5,5+
return array_reduce($chunks, function ($column, $chunk) use ($idx) {
if (!isset($chunk[$idx])) return $column;
array_push($column, $chunk[$idx]);
return $column;
}, array());
}, range(0, 3));
echo implode("<br />", array_map(function ($row){
return implode(', ', $row);
}, $rows));