Liebes Forum,
ich möchte eine Personenliste mittels usort sortieren.
Jede Person ist als ein Array angelegt, das ich der Einfachheit halber hier so angebe:
$person[x] = Array ( [0] => Vorname
[1] => Nachname
[2] => Funktion )
Nun soll in der Callback-Funktion eigentlich nur nach Nachnamen und Vornamen sortiert werden, aber bei einer bestimmten Funktion der Person soll diese ganz nach oben in der Liste.
Meine Lösung bisher:
function sonstige_sortieren($person1, $person2)
{
// Nachnamen vergleichen
if($person1[1] != $person2[1]) return strcmp($person1[1], $person2[1]);
//Vornamen vergleichen
if($person1[0] != $person2[0]) return strcmp($person1[2], $person2[0]);
return 0;
}
function spezial_sortieren($person1, $person2)
{
if(substr_count($person1[2], "Funktion") > 0 || substr_count($person1[2], "Funktion") > 0)
{
// "Funktionär" dabei?
if(substr_count($person1[2], "Funktion") > 0 && substr_count($person2[2], "Funktion") < 0) return 1; // ja, ersterer
if(substr_count($person1[2], "Funktion") < 0 && substr_count($person2[2], "Funktion") > 0) return -1; // ja, zweiterer
}
// weiter vergleichen
return sonstige_sortieren($person1, $person2);
}
Keine Ahnung, ob meine Idee an sich schon einen Denkfehler enthält... HILFE!
Liebe Grüße aus Ellwangen,
Felix Riesterer.