phpbar.de logo

Mailinglisten-Archive

[php] mehrdimensionales Array nach Werten sortieren

[php] mehrdimensionales Array nach Werten sortieren

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Die Aug 23 17:23:40 CEST 2005


Lutz Zetzsche schrieb:
>> Welche Array-Namen muß ich denn der Funktion übergeben, damit sie mir
>> das Gesamtarray nach Namen sortiert ? Kann mir das bitte jemand sagen ?
>
> Du mußt den Array zunächst umbauen:
>
> $arr[name][0] = "Lehmann"
> $arr[vorname][0] = "bla"
> $arr[kdnr][0] = 3
> ...
> $arr[name][1] = "Böhme"
> $arr[vorname][1] = "bla"
> $arr[kdnr][1] = 5
>
> Dann geht es so, wenn Du nach Name ASC, Vorname ASC sortieren möchtest:
>
> array_multisort ($arr[name], SORT_ASC, SORT_STRING, $arr[vorname],
> SORT_ASC, SORT_STRING)

Da fehlt noch etwas Wichtiges, fällt mir gerade auf. Ich hatte leider nur
Dein Beispiel angepaßt. ;-) Es gibt zwei Möglichkeiten:

1. Du fügst jetzt einfach alle Elemente in array_multisort() ein:

array_multisort ($arr[name], SORT_ASC, SORT_STRING, $arr[vorname],
SORT_ASC, SORT_STRING, $arr[kdnr], SORT_ASC, SORT_STRING, ........)

2. Du fügst, und das ist meines Erachtens die beste Lösung, einfach den
Ausgangsarray, also den VOR dem obigen Umbau, an:

array_multisort ($arr[name], SORT_ASC, SORT_STRING, $arr[vorname],
SORT_ASC, SORT_STRING, $arr_vor_umbau, SORT_ASC, SORT_STRING)

Beispiel 2 ist übrigens der Beweis dafür, daß Norberts These nicht stimmt,
daß man die Datenstruktur ($arr_vor_umbau) umbauen muß. Es reicht, die
Daten, die man für die Sortierung benötigt, in einen zweiten Array ($arr
-> hier mit den Elementen "name" und "vorname") zu extrahieren.

Das nur auf die Schnelle. Ich muß jetzt leider weg. Sollte es Probleme
geben - obiges ist von mir aus Zeitmangel ungetestet und nur eine
Schnellanleitung zur Selbsthilfe -, dann gucke ich heute Abend noch einmal
drauf. :-)


Viele Grüße

Lutz


php::bar PHP Wiki   -   Listenarchive