Подтвердить что ты не робот

PHP - добавление divs в цикл foreach каждые 4 раза

Мне нужна небольшая помощь в цикле foreach.

В основном, что мне нужно сделать, это обернуть div по выходным данным каждые 4 цикла.

У меня следующий цикл:

foreach( $users_kicks as $kicks ) {
    echo $kicks->brand;
}

За каждые 4 раза это эхо, что я хочу обернуть его так, чтобы в конце он выглядел так:

<div>
    kicks brand
    kicks brand
    kicks brand
    kicks brand
</div>
<div>
    kicks brand
    kicks brand
    kicks brand
    kicks brand
</div>
<div>
    kicks brand
    kicks brand
    kicks brand
    kicks brand
</div>

и т.д.

Приветствия

4b9b3361

Ответ 1

$count = 1;
foreach( $users_kicks as $kicks ) 
{
    if ($count%4 == 1)
    {  
         echo "<div>";
    }
    echo $kicks->brand;
    if ($count%4 == 0)
    {
        echo "</div>";
    }
    $count++;
}
if ($count%4 != 1) echo "</div>"; //This is to ensure there is no open div if the number of elements in user_kicks is not a multiple of 4

Ответ 2

Этот ответ очень поздний - но в случае, если люди это видят - это более чистое решение, без грязных счетчиков и if:

foreach (array_chunk($users_kicks, 4, true) as $array) {
    echo '<div>';
    foreach($array as $kicks) {
         echo $kicks->brand;
    }
    echo '</div>';
}

Вы можете прочитать о array_chunk на php.net

Ответ 3

Попробуйте оператор% модуля.

$i=1;
//div begins
foreach( $users_kicks as $kicks ) {
   if($i % 4 ==0)
    {
      //div ends
      //div begins
    }
    echo $kicks->brand;
   $i++;
}
//div ends

Ответ 4

вы также можете использовать array_chunk, который вырезает массив по блокам

$blocks = array_chunk($users_kicks, 4);
foreach ($blocks as $block) {
    echo '<div>';
    foreach ($block as $kicks) {
        echo $kicks->brand;
    }
    echo '</div>';
}

Ответ 5

Небольшая модификация AVD-ответа, чтобы убедиться, что нет пустого DIV, если массив пуст или он считается коэффициентом 4...

if($lastRec=count($user_kicks)){
  echo '<div>';
  $i=1;
  foreach( $users_kicks as $kicks ) {
    if( ($i % 4 == 0) && ($i<$lastRec) ) echo '</div><div>';
    echo $kicks->brand;
    $i++;
  }
  echo '</div>';
}