PHP цикл foreach, каждое количество шагов создает новую оболочку вне цикла

0

Мне нужен совет по этому поводу. Если у меня есть PHP foreach loop:

<div class="wrapper">
  <?php foreach ($item as $element): ?>
    <!-- some HTML of $element -->
  <?php endforeach; ?>
</div>

и после каждого 5-го $item я хочу создать новый .wrapper со следующими 5 элементами в foreach. И повторите этот шаг, пока все не закончится. Выход должен быть следующим:

<div class="wrapper">
  <!-- some HTML of $element 1 -->
  <!-- some HTML of $element 2 -->
  <!-- to $element 5 -->
</div>

<div class="wrapper">
  <!-- some HTML of $element 6 --> 
  <!-- to $element 10 -->
</div>

Нужно ли мне запускать еще один foreach снаружи, чтобы сделать это возможным?

благодаря

  • 0
    На самом деле нет необходимости делать опоссит, то есть выводить обертку для цикла каждые 5 $
  • 0
    @Akis Акис и как именно я прошу every 5 items .
Показать ещё 1 комментарий
Теги:
foreach

3 ответа

3
Лучший ответ

Попробуй это

$i = 0; 
<?php 
    foreach ($item as $element) { 
        if($i%5==0) echo "<div class=\"wrapper\">";
?>

        <!-- some HTML of $element -->

<?php
        if($i%5==4) echo "</div>";
        $i++;
    }
?>
  • 0
    Я думаю, что этот код не будет работать. Он обернет первый элемент в div, затем пятый и т. Д. Все остальные элементы будут находиться вне div. Вы проверяли это?
  • 0
    Спасибо за указание. Починил это.
2

Возможное решение:

<div class="wrapper">
    <?php $counter = 0; ?>
    <?php foreach ($item as $element): $counter++; ?>
        <!-- some HTML of $element -->
        <?php if ($counter % 5 === 0 && $counter !== count($item)): ?>
            </div>
            <div class="wrapper">
        <?php endif; ?>
    <?php endforeach; ?>
</div>
0

Попробуй это

$i = 0;
<?php foreach($item as $element) : ?>
        <?php if($i == 0) : $i=5; ?>
              <div class="wrapper">
        <?php endif; ?>

           <!-- some HTML of $element -->
        <?php $i -= 1; if($i == 0) : ?>
          </div>
        <?php endif; ?>
  <?php endforeach; ?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню