циклы — PHP: упаковка каждой группы из 3 элементов

Я пытаюсь выяснить, как написать цикл, который обернет каждую группу из 3 элементов. Однако для последней итерации следует обернуть все, что осталось (будь то один, два или три элемента)

Так что в основном этот вид шаблона:

div
do stuff
do stuff
do stuff
end-div
div
do stuff
do stuff
do stuff
end-div
div
do stuff
do stuff
do stuff
end-div
div
do stuff
end-div

Вот где я сейчас нахожусь:

<?php

$counter = 0;

for ($i = 1; $i <= 10; $i++) {

if (($counter + 1) % 3 == 0) {
echo 'div <br />';
}
echo 'do stuff <br />';
if (($counter + 1) % 3 == 0) {
echo 'end-div <br />';
}

$counter ++;
}

?>

Это дает мне следующее:

do stuff
do stuff
div
do stuff
end-div
do stuff
do stuff
div
do stuff
end-div
do stuff
do stuff
div
do stuff
end-div
do stuff

Кто-нибудь может увидеть, где я иду не так?

0

Решение

Другими словами, вам нужно написать div перед каждой группой из трех предметов и end-div после каждой группы из трех предметов:

// $counter always tells the number of processed items
$counter = 0;

for ($i = 1; $i <= 10; $i++) {
// before a group of three, $counter is a multiple of three
if ($counter % 3 == 0) {
echo 'div <br />';
}

// process the item then count it
echo 'do stuff <br />';
$counter ++;

// after a group of three, $counter is a multiple of three
if ($counter % 3 == 0) {
echo 'end-div <br />';
}
}

// close the last group if it is not complete
if ($counter % 3 != 0) {
echo 'end-div <br />';
}
0

Другие решения

Там нет необходимости использовать отдельные $counter переменная, использовать $i переменная в for петля сама

echo 'div <br />';
for ($i = 0; $i < 10; $i++) {
if($i != 0 && $i % 3 == 0)
echo 'end-div <br /> div <br />';
echo 'do stuff <br />';
}
echo 'end-div';
0

По вопросам рекламы [email protected]