usort, Array sortieren
Dieter Raber
- php
0 Tara
Hallo,
Ich hab Probleme mit u(k)sort():
Ein Array wird dynamisch erstellt, es enthaelt _immer_ ein Element mit dem Wert x, manchmal auch zusaetzlich y und z oder sonstwas. Das Array soll so sortiert werden, dass x immer an erster Stelle steht, die Reihenfolge der anderen Werte ist egal. Wie muss die Calback-Funktion aussehen? Ich kenne die Beispiele aus dem Manual und den User-Comments, aber irgendwie blicke ich nicht so recht durch.
Vielen Dank erstmal.
Dieter
Hi Dieter,
Beispiel:
$test=array();
$test[]= "a";
$test[]= "b";
$test[]= "z";
$test[]= "y";
$test[]= "x";
$test[]= "q";
function xsort($a,$b) {
if ($a=='x') return -1;
else if ($b=='x') return 1;
else return (strcmp($a, $b)); //falls der Rest alphabetisch geordnet werden soll, ansonsten einfach return 0
}
usort($test,'xsort');
Letzten Endes muss die Funktion, die Du an usort ueberreichst, einfach zwei Variablen (hier a und b) miteinander vergleichen koennen. Falls a kleiner ist als b (und daher im Array vor b stehen soll), muss der Vergleich eine negative Zahl zurueckgeben. Falls die beiden gleich sind, muss 0 zurueckgegeben werden, ansonsten eine positive Zahl.
Da das 'x' bei Dir an erster Stelle stehen soll, wird in der Funktion xsort gar nicht erst verglichen, sondern gleich gesagt, dass 'x' kleiner ist als alle anderen Elemente im Array, bzw. dass alle anderen Elemente groesser sind als x.
Schoenen Tag noch
Tara