Вот лучший способ. В этом используется синтаксис Bootstrap, но вы можете легко изменить его на формат table
или любой другой. Логика та же. Не забудьте обновить имя массива $items
своим собственным, где это необходимо.
<div class="container">
<div class="row">
<?php
// Sample array
$items = array(1, 2, 3, 4, 5, 6, 7, 8);
// Define how many columns
$cols = 6;
$tdCount = 1; // Don't change
foreach ($items as $key => $item)
{
?>
<div class="col"><?php echo $key; ?></div>
<?php
// Close and open new rows
if( (($key + 1) % $cols) === 0 && ($key + 1) !== count($items) )
{
?>
</div>
<div class="row">
<?php
}
// Increment column count
$tdCount++;
// Fill with empty columns at the end
if( ($key + 1) === count($items) && $tdCount <= $cols )
{
$spacers = $cols - $tdCount;
for ($i = $spacers; $i >= 0 ; $i--)
{
?>
<div class="col spacer"> </div>
<?php
}
}
// Reset columns count
if( $tdCount > $cols )
{
$tdCount = 1;
}
}
?>
</div>
</div>
Будет выведено:
<div class="container">
<div class="row">
<div class="col">0</div>
<div class="col">1</div>
<div class="col">2</div>
<div class="col">3</div>
</div>
<div class="row">
<div class="col">4</div>
<div class="col">5</div>
<div class="col">6</div>
<div class="col">7</div>
</div>
<div class="row">
<div class="col">8</div>
<div class="col">9</div>
<div class="col spacer"> </div>
<div class="col spacer"> </div>
</div>
</div>