phpbar.de logo

Mailinglisten-Archive

[php] array sortieren

[php] array sortieren

Ringo Großer swek at gmx.net
Fre Sep 29 00:32:57 CEST 2006


Hallo Thomas,

Thomas Winter wrote:
> ich erzeuge ein array:
> $boxinfo[$durchwahl][$value][$svalue[0]] = $svalue[1];
> Wie kann ich das einfach nach $durchwahl, $svalue[0] sortieren?
> einfach asort auf das array geht ja wohl nicht.
> Muss ich es auseinander nehmen und dann wieder zusammenbauen?

Von mir erstmal wieder die kritische Frage: Bist du auf diese
Struktur festgelegt, eignet sie sich wirklich oder lässt sich sich
ggf für einen Zweck optimieren?
Müssen die Werte zu Durchwahl, Value, sValue0 und sValue1
wirklich so verschachtelt sein oder kann man das nicht flacher
abbilden? Dann könnte man array_multisort einsetzen.

Vielleicht zeigst du uns nochmal am konkreten Beispiel,
wie das Array aussehen könnte.
Weil gerade diese $svalue[0] und $svalue[1] sind ja im
Endeffekt konkrete Werte, die im Array stehen. Und diesen
solltest du vielleicht noch etwas sprechendere Namen geben.

Als direkte Lösung für deine aktuelle Struktur fallen mir je
Sortierkriterium 1 Vorgang, also insgesamt 2 Vorgänge ein.
Ebenfalls vorausgesetzt, dass ich richtig verstanden habe,
was du erreichen willst.

1.
ksort($boxinfo)
Damit sind die Durchwahlen innerhalb von Boxinfo schonmal
in der gewünschten (hoffentlich numerisch aufsteigenden)
Reihenfolge.

2.
foreach ( $boxinfo as $durchwahl => $values ) {
    foreach ( $values as $value => $svalues0 ) {
        ksort($svalues0);
        // überschreibe im originalen array an der gleichen
        // position mit dem nun sortierten array
        $boxinfo[$durchwahl][$values] = $svalues0;
    }
}

regards, Ringo 


php::bar PHP Wiki   -   Listenarchive