1. Array mittels array_reverse() umdrehen
Die Reihenfolge der Elemente in einem Array kann mit array_reverse($array) umgekehrt werden:
PHP-Code
<?php $arr = array('eins', 'zwei', 'drei', 'vier', 'fünf'); var_dump(array_reverse($arr)); ?>
Ausgabe
array(5) { [0]=> string(4) "fünf" [1]=> string(4) "vier" [2]=> string(4) "drei" [3]=> string(4) "zwei" [4]=> string(4) "eins" }
Falls die Zuordnung zwischen Schlüssel und Wert wichtig ist, kann (bool)true als zweiter Parameter an die Funktion angehängt werden.
Dies macht aber nur bei Integer-Schlüsseln einen Unterschied.
Schlüssel vom Datentyp String bleiben davon unberührt.
PHP-Code
<?php // String-Schlüssel, bleiben gleich $arr = array('peter'=>'180cm', 'sabine'=>'170cm', 'ralf'=>'173cm'); var_dump(array_reverse($arr)); var_dump(array_reverse($arr, true)); // Integer-Schlüssel, ohne true als zweiter Parameter werden die Schlüssel neu gebildet (aufsteigend, beginnend bei 0) $arr = array(10=>'zehn', 20=>'zwanzig', 30=>'dreißig'); var_dump(array_reverse($arr)); var_dump(array_reverse($arr, true)); ?>
Ausgabe
array(3) { ["ralf"]=> string(5) "173cm" ["sabine"]=> string(5) "170cm" ["peter"]=> string(5) "180cm" } array(3) { ["ralf"]=> string(5) "173cm" ["sabine"]=> string(5) "170cm" ["peter"]=> string(5) "180cm" } array(3) { [0]=> string(7) "dreißig" [1]=> string(7) "zwanzig" [2]=> string(4) "zehn" } array(3) { [30]=> string(7) "dreißig" [20]=> string(7) "zwanzig" [10]=> string(4) "zehn" }
2. Elemente mit einer for-Schleife umgekehrt anordnen
Auch die Anwendung einer for-Schleife ist möglich, aber komplizierter als array_reverse().
PHP-Code
<?php $arr = array('eins', 'zwei', 'drei', 'vier', 'fünf'); $arr = array_values($arr); // sicherstellen, dass die Elemente von 0 bis n aufsteigend nummeriert sind $arr2 = array(); for ($x=count($arr)-1; $x>=0; $x--) { $arr2[] = $arr[$x]; } var_dump($arr2); ?>
Ausgabe
array(5) { [0]=> string(4) "fünf" [1]=> string(4) "vier" [2]=> string(4) "drei" [3]=> string(4) "zwei" [4]=> string(4) "eins" }
Im vorherigen Beispiel gehen die Schlüssel verloren. Sollen diese erhalten bleiben, dann kann wie folgt vorgegangen werden:
PHP-Code
<?php $arr = array('eins', 'zwei', 'drei', 'vier', 'fünf'); $keys = array_keys($arr); $arr2 = array(); for ($x=count($keys)-1; $x>=0; $x--) { $key = $keys[$x]; $arr2[$key] = $arr[$key]; } var_dump($arr2); ?>
Ausgabe
array(5) { [4]=> string(4) "fünf" [3]=> string(4) "vier" [2]=> string(4) "drei" [1]=> string(4) "zwei" [0]=> string(4) "eins" }
3. Mehrdimensionales Array umdrehen
Um ein mehrdimensionales Array umzudrehen kann eine rekursive Funktion verwendet werden.
Die hier vorgestellte bekommt eine Variable beliebigen Datentyps übergeben.
Handelt es sich um kein Array, dann wird diese Variable direkt zurückgegeben.
Handelt es sich um ein Array, dann wird auf jedes Element die Funktion wiederum angewendet und zum Schluss dieses Array mit array_reverse() umgedreht.
Dadurch wird die Funktion letztlich auf jedes Unterarray im Array angewendet, welche wiederum alle durch array_reverse() umgedreht werden.
PHP-Code
<?php function array_reverse_recursive($arr) { if (!is_array($arr)) { return $arr; } else { foreach ($arr as $key=>$val) { $arr[$key] = array_reverse_recursive($val); } return array_reverse($arr); } } $arr = array('monatsanfang'=>array(1, 2, 3), 'monatsende'=>array(28, 29, 30)); $arr = array_reverse_recursive($arr); var_dump($arr); ?>
Ausgabe
array(2) { ["monatsende"]=> array(3) { [0]=> int(30) [1]=> int(29) [2]=> int(28) } ["monatsanfang"]=> array(3) { [0]=> int(3) [1]=> int(2) [2]=> int(1) } }