Сделать новую строку тега первым номером и каждые 4 цифры после?
Я пытаюсь запустить новый цикл в первый раз, а затем после 4-х отсчетов закрыть и затем открыть новый цикл, я попытался сделать это с модулем, но я не думаю, что я делаю это правильно.
Код, который я пробовал:
<?php for($i = 1; $i <= 12; $i++): ?>
<?php if(! (i % 4)): ?>
<div class="row">
<?php endif; ?>
<?php echo $i; ?>
<?php if(! (i % 5)): ?>
</div>
<?php endif; ?>
<?php endfor; ?>
Итак, мои результаты должны быть:
<div class="row">
1 2 3 4
</div>
<div class="row">
5 6 7 8
</div>
<div class="row">
9 10 11 12
</div>
так далее...
3 ответа
Простейшим решением будет:
- начать вывод маркера перед
- затем переберите свои вещи
- отображение предмета
- и если
$i % 4 == 3
, ставя маркеры после и до
- и, наконец, отображать окончательный после маркера.
Например, что-то вроде этой части кода:
$arr = range(1, 15);
echo "before";
for ($i=0 ; $i<count($arr) ; $i++) {
echo " $i ";
if ($i % 4 == 3) {
echo 'after</br />';
echo 'before';
}
}
echo "after<br />";
Даст такой вывод:
before 0 1 2 3 after
before 4 5 6 7 after
before 8 9 10 11 after
before 12 13 14 after
Преимущество этого решения: вам не нужно иметь дело с каким-либо конкретным случаем (началом и концом цикла) внутри цикла.
Это должно работать, вы запутаетесь с тем, как %
работает, вы только хотите использовать % 4
(так как вы проверяете кратные 4), но сравните с различными значениями. !($i % 4)
будет верно для точных кратных 4, что не то, что вы хотите там.
<?php for($i = 1; $i <= 12; $i++):
if(i % 4 == 1): ?>
<div class="row">
<?php endif;
echo $i; ?>
<?php if(i % 4 == 0): ?>
</div>
<?php endif;
endfor; ?>
Вы получите несоответствие, как вы делаете это. Что вы хотите, вероятно, что-то вроде:
<div class="row">
<?php for($i = 1; $i <= 12; $i++): ?>
<?php if(! (i % 4)): ?>
</div>
<div class="row">
<?php endif; ?>
<?php echo $i; ?>
<?php endfor; ?>
</div>