Sven Rautenberg: Verschachteltes Array sortiern - nach mehren Spalten

Beitrag lesen

Moin!

"Alternativ gibt es noch array_multisort(), doch das erfordert eine andere Struktur der Daten, ein so genanntes Spalten-Array. Du hast jedoch ein Zeilen-Array vorliegen."

Damit habe ich schon getestet, indem ich alle Elemente einer Zeile in einem String abgespeichert habe und jeweils einen eindimensionalen Array zugewiesen haben.

Leider ist aber das Ergebnis falsch ;-)

Richtig, hat dedlfix dir ja auch gesagt, dass array_multisort dir nicht weiterhilft.

Nutze usort() und definiere dir eine passende Vergleichsfunktion. Du kriegst die Arrayelemente des äußeren Arrays übergeben. Typischerweise heißen die beiden Variablen, denen zwei Werte zum Vergleich übergeben werden, $a und $b, was bedeutet, dass du in der definierten Sortierfunktion in $a und $b jeweils eines der inneren Arrays mit deinem Datum drin stehen hast.

Deine Funktion muß nun nacheinander Jahr, Monat und Tag vergleichen und nach jedem Vergleich entscheiden, ob dadurch schon eine Reihenfolge gefolgert werden kann. Nur bei gleichem Jahr muß der Monat verglichen werden. Nur bei gleichem Monat muß der Tag verglichen werden. Nur bei gleichem Tag gibst du eine 0 zurück, ansonsten eine 1 oder eine -1, je nachdem, ob gilt $a > $b oder $b > $a.

- Sven Rautenberg

--
"Love your nation - respect the others."