Сделать новую строку тега первым номером и каждые 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>
Другие вопросы по тегам