Alternative Lösung ohne den Overhead des Aufrufs array_chunk. (Versteht mich nicht falsch, ich liebe array_chunk und benutze es für viele Dinge, aber dies ist nicht einer, wo es gebraucht wird.)
$array = getData(...);
$n = 5; //or whatever you want to chunk into
echo "<div>"; //always open one
$lcv = 1; // loop count variable
foreach ($array as $key => $val) {
//format $key/$val as needed here...
if ($lcv++ % $n == 0) { //every Nth item
echo "</div><div>"; //close old one and open new one
}
}
echo "</div>"; //always close the last one.
Der schlimmste Fall ist, dass Sie <div></div>
am Ende einen leeren Block haben könnten, wenn Sie ein genaues Vielfaches von n hätten. Dies ist jedoch in 99,999% der Fälle kein wirklich großer Deal. :) Wenn es ... dann kann man es so fangen:
$array = getData(...);
$num = count($array);
$n = 5; //or whatever you want to chunk into
echo "<div>"; //always open one
$lcv = 1; // loop count variable
foreach ($array as $key => $val) {
//format $key/$val as needed here...
if ($lcv++ % $n == 0 && $lcv < $num) { // every Nth item, unless we're done
echo "</div><div>"; //close old one and open new one
}
}
echo "</div>"; //always close the last one.
(Natürlich können Sie verwenden können print
, echo
oder ?>...<?
Tags ... was auch immer Sie eigentlich die ganze Ausgabe tun wollen, keine Rolle spielt.)
Und um ehrlich zu sein, würde ich wahrscheinlich noch einen Fall hinzufügen:
$array = getData(...);
$num = count($array);
if ($num == 0) {
echo "<div>No results?</div>";
} else {
$n = 5; //or whatever you want to chunk into
echo "<div>"; //always open one
$lcv = 1; // loop count variable
foreach ($array as $key => $val) {
//format $key/$val as needed here...
if ($lcv++ % $n == 0 && $lcv < $num) { // every Nth item, unless we're done
echo "</div><div>"; //close old one and open new one
}
}
echo "</div>"; //always close the last one.
}
Nur um den Fall zu behandeln, dass bei der Suche überhaupt nichts zurückgegeben wurde.