Я пытаюсь выяснить, как написать цикл, который обернет каждую группу из 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
Кто-нибудь может увидеть, где я иду не так?
Другими словами, вам нужно написать 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 />';
}
Там нет необходимости использовать отдельные $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';