molily: array_multisort und asort

Beitrag lesen

Hallo Benjamin,

mit asort($array) kann man einen assoziativen Array unter Beibehaltung der Zuordnungen sortieren - soweit ist alles klar. Nun bin ich auf die Funktion array_multisort (http://www.php.net/manual/de/function.array-multisort.php) gestoßen, und habe das Manual dort nicht so richtig verstanden.

Der Vergleich mit ORDER BY in SQL ist recht anschaulich, finde ich: »[...] Bei der Sortierung werden die Schlüsselassoziationen beibehalten.   Die angegebenen Arrays werden als Spalten einer Tabelle behandelt, welche nach Reihen sortiert werden«.

Ich betrachte die Elemente des Array 1 als Indizes, und die des Array 2 als den Inhalt. Kann ich mit array_multisort so den gleichen Effekt wie mit asort aus dem ersten Beispiel erzielen, nur eben auf 2 nicht-assotziative Arrays verteilt

Probiere es einfach aus. ;) Anscheinend ja, siehe folgendes Beispiel:

<?php
$keys=Array('d', 'a', 'b', 'c');
$values=Array('Zitrone', 'Orange', 'Banane', 'Apfel');

array_multisort($values, $keys);

/* Zusammenkleben: */
$murks=Array();
foreach ($keys as $key) list(, $murks[$key])=each($values);

print_r($murks);
?>

Gibt aus:

Array
(
    [c] => Apfel
    [b] => Banane
    [a] => Orange
    [d] => Zitrone
)

Das ähnelt der von dir gewünschten Sortierung nicht wenig:

|     c     |  Apfel   |
|     b     |  Banane  |
|     a     |  Orange  |
|     d     |  Zitrone |

Oder muss ich mir dafür was eigenes basteln?

Wie ich die Doku verstehe und wie die Tests zeigen offensichtlich nicht, array_multisort ist vermutlich genau das, was du suchst.

Grüße,
Mathias