% является оператором модуля. Возвращает остаток после деления, поэтому 7 % 4 == 3
.
Вы действительно должны начинать с 0. Это потому, что 0 % 4 == 0
и 4 % 4 == 0
... И вы хотите, чтобы самый первый элемент был новой строкой! Таким образом, вы хотите новые строки в 0, 4, 8 и т. Д. ... Если вы начнете с 1, то 1, 2 и 3 не будут в строке.
Кроме того, мы должны не забывать закрывать строку каждого элемента перед новой строкой.
Наконец, если мы выйдем из цикла без закрытия последней строки, мы должны сделать это после выхода из цикла.
Я покажу, как это сделать с таблицами, но вы можете использовать div с классами так же просто, как и просто.
<table>
<?php
// Start at zero, so we start with a new row
// Since we start at 0, we have to use < number of items, not <=
for ($i = 0; $i < $numberOfItems; ++$i)
{
// if divisible by 0 start new row
if ($i % 4 == 0)
echo '<tr>';
// Always print out the current item
echo '<td>' . $item[$i] . '</td>';
// If the next $i is divisible by 4, we have to close the row
if ($i % 4 == 3)
echo '</tr>';
}
// If we didn't end on a row close, make sure to close the row
if ($i % 4 != 3)
echo '</tr>';
?>
</table>