Мне нужна небольшая помощь в цикле 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>
и так далее.
ура
$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
Этот ответ очень поздний, но в случае, если люди это видят – это более чистое решение, без грязных счетчиков и 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
Попробуйте оператор% модуля.
$i=1; //div begins foreach( $users_kicks as $kicks ) { if($i % 4 ==0) { //div ends //div begins } echo $kicks->brand; $i++; } //div ends
вы также можете использовать array_chunk, который вырезает массив по блокам
$blocks = array_chunk($users_kicks, 4); foreach ($blocks as $block) { echo '<div>'; foreach ($block as $kicks) { echo $kicks->brand; } echo '</div>'; }
Небольшое изменение в ответе 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>'; }