PHP l oop добавить div вокруг предметов между счетчиками - PullRequest
1 голос
/ 28 января 2020

Я использую следующий рабочий код, чтобы обернуть каждые 3 элемента в div:

$count = 1

foreach( $names as $name ):

  if ($count%3 == 1) {
    echo '<div class="wrap">';
  }

  echo $name;

  if ($count%3 == 0) {
    echo '</div>';
  }

  $count++;

endforeach;

if ($count%3 != 1) echo "</div>";

Возвращает:

<div class="wrap">
  name
  name
  name
</div>
<div class="wrap">
  name
  name
  name
</div>
<div class="wrap">
  name
  name
  name
</div>
<div class="wrap">
  name
  name
  name
</div>

Пока все хорошо ... но я хочу второй упакованный набор должен иметь 4 элемента «name», например, так:

<div class="wrap">
  name
  name
  name
</div>
<div class="wrap">
  name
  name
  name
  name
</div>
<div class="wrap">
  name
  name
  name
</div>
<div class="wrap">
  name
  name
  name
</div>

Каждые 3 элемента должны быть обернуты в div, кроме второго набора, который будет иметь 4 элемента.

Или другой способ объяснить: элементы с 4 по 8 будут обернуты в div, а все остальные 3 элемента будут обернуты в div.

Как этого достичь?

1 Ответ

2 голосов
/ 28 января 2020

Добавьте специальные случаи для первых двух DIV и отрегулируйте модуль для последующих.

$count = 1

foreach( $names as $name ):
    if ($count == 1 || $count == 4 || ($count > 5 && $count % 3 == 2)) {
        echo '<div class="wrap">';
    }
    echo $name;
    if ($count == 3 || $count == 7 || ($count > 7 && $count % 3 == 1)) {
        echo '</div>';
    }
    $count++;
endforeach;
// Finish the last block -- lots of different cases
if ($count < 4 || ($count > 4 && $count < 8) || ($count > 8 && $count % 3 != 2)) {
    echo '</div>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...