dedlfix: Tatort - Sendezeiten > Multiarray sortieren nach Timestamp

Beitrag lesen

Tach!

Zum Sortieren habe ich daher alle Einträge in ein Array gepackt: siehe http://pastebin.com/Mwd9vRLK .
Sortieren möchte ich nach ["timestamp"] im Modus ASC (kleinster Wert nach oben). Nur wie sortiere ich ein Mulitarray?
http://php.net/manual/de/function.array-multisort.php hat zwei Werte?

Vergiss, dass es array_multisort() gibt. Diese Funktion eignet sich nicht für die üblichen Datenstrukturen, bei denen ein Datensatz ein Array ist und viele Datensätze ein Array aus diesen Datensatzarrays. array_multisort() hätte stattdessen gern ein Array, in dem die Felder zu Arrays zusammengefasst sind. Ein Datensatz ergibt sich dann aus den gleich positionierten Elementen in diesen Feld-Arrays. Man nennt diese Strukturen auch array of rows (Datensatz-Array) und array of columns (was array_multisort() gern hätte).

Zur Lösung deines Problems solltest du dein Augenmerk auf die eigentliche Struktur lenken. Der Begriff Multi-Array ist viel zu unspezifisch und hilft bei der Lösungsfindung kaum. Du hast also genauer beschrieben ein Array und darin für jeden Datensatz ein weiteres Array. Du möchtest nun das äußere Array anhand eines Merkmals der inneren Arrays sortieren. Dazu nimmt man am besten eine Sortierfuntion mit benutzerdefinierter Vergleichsfunktion. Diese findest du unter den Namen u*sort(). Deine zu erstellende Vergleichsfunktion bekommt jeweils zwei Elemente des zu sortierenden Arrays, was in deinem Fall je ein inneres Datensatz-Array ist. Von diesen beiden musst du nun das gewünschte Feld vergleichen und 0, -1 oder 1 zurückgeben, so wie es im PHP-Handbuch beschrieben ist.

dedlfix.