Hallo,
Ich brauche von einem Array die Jahren und möchte es gerne in Blöcke ausgeben, sprich 1 Block gleich 5 Jahre
mein array sieht z.b so aus
$array = array(2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 2001, 2000);
Hübscher und weniger Tippaufwand mit
$array = [link:http://de2.php.net/manual/de/function.range.php@title=range](2011, 2000);
foreach ($array as &$value) {
echo $value;
}
>
> Benutze die Funktion array\_chunk(), um dein Array in Teile zu je 5 Stücke zu unterteilen, und nimm dann eine doppelte foreach-Schleife.
und bei PHP 5.3.0 oder neuer sogar ohne explizite Schleife mit array\_map und einer Lambda-Funktion:
~~~php
# Unser Ausgangsarray:
$array = [link:http://de2.php.net/manual/de/function.range.php@title=range](2011, 2000);
# Wir teilen das Array, wie von Sven vorgeschlagen, mit array_chunk
# in ein Array von 5er-Arrays auf. Das letzte kann kleiner ausfallen,
$chunks = [link:http://de2.php.net/manual/de/function.array-chunk.php@title=array_chunk]($array, 5);
# schaffen uns eine Lambda-Funktion, die ein Array mit dem Verbindungszeichen
# Komma (,) zu einer Zeichenkette zusammenfasst, siehe auch Beispiel #2 zu
# [link:http://de2.php.net/manual/de/function.array-map.php@title=array_map]:
$kommaliste = function($arr) { return implode(',', $arr); };
# wenden diese per array_map auf die inneren Arrays an
# und fassen das entstehende Arrays aus Zeichenketten mit der Zeichenfolge
# "</div>\n<div>" zusammen,
# setzen ein <div> vornedran
# und ein </div> hintendran
$result = '<div>'
. implode("</div>\n<div>", [link:http://de2.php.net/manual/de/function.array-map.php@title=array_map]($kommaliste, $chunks))
. "</div>\n";
# und geben unsere div-Kette aus.
# Anmerkung: die Zeilenumbrüche habe ich der besseren Lesbarkeit wegen eingefügt.
print $result;
Wir können den Code selbstverständlich übersichtlicher gestalten, wenn wir auf die überflüssigen Hilfsvariablen $array und $chunks verzichten ;-)
<?php
header("Content-Type: text/plain");
$funct = function($value) { return implode(',', $value); };
print '<div>' . implode("</div>\n<div>", array_map($funct, array_chunk(range(2011, 2000), 5))) . '</div>';
?>
Ausgabe:
<div>2011,2010,2009,2008,2007</div>
<div>2006,2005,2004,2003,2002</div>
<div>2001,2000</div>
Freundliche Grüße
Vinzenz