На самом деле у меня есть этот цикл foreach:
<ul> <?php foreach ( $tasks as $task ) { ?> <li> ... </li> <?php } ?> </ul>
Он возвращает:
<ul> <li>...</li> <li>...</li> <li>...</li> <li>...</li> ... </ul>
Теперь мне нужно изменить цикл, чтобы поместить все 3 <li>
в новый <ul>
, чтобы я мог:
<div> <ul> <li>...</li> <li>...</li> <li>...</li> </ul> <ul> <li>...</li> <li>...</li> <li>...</li> </ul> ... </div>
Как мне изменить цикл foreach для достижения этого результата?
Это должно сработать для вас:
Просто array_chunk()
ваш массив в куски 3, а затем implode()
каждый subArray, например
<div> <?php foreach (array_chunk($tasks, 3) as $task) { echo "<ul><li>" . implode("</li><li>", $task) . "</li></ul>"; } ?> </div>
попробуй это
foreach (array_chunk($arrays, 3, true) as $array) { echo '<ul>'; foreach($array as $value) { echo "<li>".$value."</li>"; } echo '</ul>'; }
Попробуйте это.
<ul> <?php foreach ( $tasks as $k=>$task ) { ?> <?php if($k % 3 == 1) { ?> <ul> <?php } ?> <li></li> <?php if($k % 3 == 0) { ?> </ul> <?php } ?> <?php } ?> </ul>
Мне нравится ответ @ Rizer123 для консистенции, но если вы хотите продолжать перебирать отдельные элементы, а не переделывать (например, если вам нужно выполнить некоторые манипуляции с отдельными элементами), я бы предложил примерно следующее:
<ul> <?php foreach ( array_values($tasks) as $k => $task ) { if($k % 3 == 0) { ?> <ul> <?php } ?> <li> ... </li> if($k % 3 == 2) { ?> </ul> <?php } ?> <?php } ?> </ul>