ORDER BY für php arrays

Nord-Süd-Richtung

Erfahrenes Mitglied
Hi,
ich habe ein Mehrdimensionales array, (ein array mit 22 unterarrays) und möchte nun alle Werte nach 2 Werten sortieren, also erst nach Wert x und wenn da welche gleich sind, auch nach Wert y,
Wie ist das möglich?

mfg

PS: Habe mir schon array_multisort angeguckt, aber ich komme damit nicht zurecht :suspekt:
 
Hi,

na, Du schreibst eine Callback-Funktion, die den Vergleich zweier Elemente nach Deinen Vorgaben realisiert und rufst dann usort() mit Deinem Array und dieser Callback-Funktion auf. *schulterzuck*
Schau mal in die Beispiele.

LG
 
Hi,

PHP:
<?php
function cmp($a, $b) {
   return $a['wert1'] == $b['wert1'] ? $a['wert2'] >= $b['wert2'] : $a['wert1'] >= $b['wert1'];
}

$array[0]["wert1"] = 5;
$array[0]["wert2"] = 7;
$array[1]["wert1"] = 3;
$array[1]["wert2"] = 2;
$array[2]["wert1"] = 5;
$array[2]["wert2"] = 6;


usort($array, "cmp");

print_r($array);
?>

LG
 
Ich glaube das das nach deiner Methode nicht ganz funktioniert, ich habe mal ein weniger weiter gestönert, und habe nun diese Fehlermeldung:
Warning: array_multisort() [function.array-multisort]: Array sizes are inconsistent on line 336
PHP:
array_multisort($Display, SORT_DESC, $Display[22], SORT_DESC, $Display[21]);    
// $Display[0-22][]

Kann mir jemand weiter helfen?
 
Sorry,
ich versuche es zu vereinfachen.
Also ich habe ein Array Data, das 23 Arrays [0-22] hat.
In jedem der Arrays sind (logischerweise) Werte ($Data[21][0] z.B). Die sollen nach $Data[21] sortiert werden. Alle gleichen Einträge bei $Data[21] sollen dahinter nach $Data[22] sortiert werden.

Funktioniert dein Vorschlag da so?

edit: Das Array heißt Display, ist aber das gleiche in grün ;)
 
Hi,

Die sollen nach $Data[21] sortiert werden.

Du willst die Elemente nach dem 21. Element sortieren :confused:
Das ergibt irgendwie keinen Sinn.
Außerdem ist dieser Text genauso informativ, wie der erste...
Ich wollte die Definition des Array sehen, ähnlich, wie in meinem Beispiel.

LG
 
Zurück