phpbar.de logo

Mailinglisten-Archive

[php] array_multiksort

[php] array_multiksort

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Sam Sep 30 00:06:54 CEST 2006


Hi Ringo,

Am Freitag, 29. September 2006 01:02 schrieb Ringo Großer:
> und gleich noch eine Array-Sortier-Frage hinterher:
>
> Gibt es so etwas wie array_multiksort? Diese
> Funktion gibt es laut Manual nicht, wenn ich sie nicht
> übersehen habe.

nein. Aber in Deinen Fall ist das auch nicht nötig. Deine assoziativen 
Schlüssel sind ja Zeichenketten und dazu steht im Online-Handbuch:

"Assoziative (string) Schlüssel werden beibehalten, aber numerische 
Schlüssel werden neu nummeriert."

> Ich möchte gern das folgende Array nach dem
> Werten des Schlüssels "price" aufsteigend sortieren:
>
> $cars = array(
>     'BMW' => array(
>         'color' => 'black',
>         'year' => '2005',
>         'price' => '22.000',
>     ),
>     'Audi' => array(
>         'color' => 'blue',
>         'year' => '2004',
>         'price' => '31.000',
>     ),
>     'Renault' => array(
>         'color' => 'silver',
>         'year' => '2006',
>         'price' => '11.000',
>     ),
> );
>
> Dazu nehm ich normalerweise array_multisort
>
> $prices = array();
> foreach ( $cars as $made => $properties ) {
>     $prices[] = $properties['price'];
> }
> array_multisort($prices, SORT_ASC, $cars);
>
> mit dem Effekt, dass er mir die assoziativen Keys in
> $cars löscht, um sie durch die sortierten Indexe zu
> ersetzen.

Hm, merkwürdig. Liegt es vielleicht an der PHP-Version. Bei mir 
funktioniert das mit PHP 5.1 einwandfrei. Hier das Ergebnis:

Array
(
    [Renault] => Array
        (
            [color] => silver
            [year] => 2006
            [price] => 11.000
        )

    [BMW] => Array
        (
            [color] => black
            [year] => 2005
            [price] => 22.000
        )

    [Audi] => Array
        (
            [color] => blue
            [year] => 2004
            [price] => 31.000
        )

)

Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive