PHP: Mehrdimensionalen Array sortieren
In diesem Post werde ich euch zeigen, wie man mit PHP einen mehrdimensionalen Array sortiert.
Als erstes nehmen wir einen mehrdimensionalen Array:
$foo = array( array("zeit 1", 120), array("zeit 2", 90), array("zeit 3", 345), array("zeit 4", 256), array("zeit 5", 257), array("zeit 6", 1023) );
Als Beispiel habe ich einfach mal einen Array mit Zeiten (in Sekunden) genommen. Wie man sieht, ist dieser nach den “Zeitnamen” sortiert, und nicht nach den Zeiten ansich. Dies wollen wir jetzt ändern, so das die grösste Zeit ganz oben im Array steht.
Ich Zeige euch jetzt erstmal den ganzen Code, und werde ihn dan erklären.
//Unser mehrdimensionaler Array: $foo = array( array("zeit 1", 120), array("zeit 2", 90), array("zeit 3", 345), array("zeit 4", 256), array("zeit 5", 257), array("zeit 6", 1023) ); //Ausgeben (ungeordnet): print_r($foo); //Ordnen: $tmp = Array(); //Temporaeres Array foreach($foo as $ma) $tmp[] = $ma[1]; array_multisort($tmp, SORT_DESC, $foo); //Ausgeben (geordnet): print_r($foo);
Um noch etwas klarzustellen. Rauskopieren und verwenden ist zwar erlaubt, bringt euch aber nichts
Lest lieber die folgende Beschreibung, und versteht, was da gemacht wird.
Also, am anfang steht der Array. Danach gebe ich mit print_r den Array zur kontrolle aus. (Ihr müsst eventuell noch ein <pre>-Tag darum machen, damit ihr die Ausgabe richtig sehen könnt.)
Jetzt kommt der spannende Teil
Als erstes wird ein Temporäres Array erzeugt ($tmp), das nur für die Sortierung gebraucht wird. Jetz nehme ich in einer foreach-Schlaufe jede Zeit und schreibe sie in das $tmp-Array.
Jetzt stehen im Temporären Array also nur die Zeiten drinn. Jetzt können wir mit der Funktion array_multisort erst das Array $tmp ordnen, und diese “Ordnung” dann auf unser mehrdimensianles Array übertragen. Wie das genau funktioniert, kann ich euch nicht erklären (also was die Funktion array_multisort genau macht). Wenn es jemand weis, kann er gerne einen Kommentar hier lassen
Wenn wir uns denn Array nun Ausgeben lassen, sehen wir, das er geordnet ist. Mann kann nun auch das “SORT_DESC” in “SORT_ASC” umändern, um den Array entweder absteigend oder aufsteigen zu ordnen. Mehr Informationen darüber erhaltet iht hier.
Fragen und Kritik (oder Lob) wie immer in die Kommentare
Danke für’s lesen, und ich hoffe, es hat euch geholfen!
Noch keine Kommentare vorhanden.