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>
и т.д.
Приветствия
Ответы
Ответ 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>';
}