Lieber Sven,
in der Sortierreihenfolge müssen nur zwei Personen nach vorne sortiert werden, der Rest ist alphabetisch und nicht nach hierarchischen Ordnungen von anderen Aufgaben sortiert. Daher suche ich so "umständlich" in den Strings, weil ich sonst ein Unterarray (nach Deinem Vorschlag $person['aufgaben'][x]
) durchforsten müsste. Da war mir die Umständlichkeit der String-Funktionen einfacher, als weitere Zeilen Code für das Zurechtbasteln eines geeigneten Unter-Arrays zu schreiben.
Mittlerweile habe ich mit preg_replace() anstelle von substr_count wohl wegen des unterschiedlichen Rückgabewertes (Dank an dedlfix!) eine bessere Lösung gefunden. Es funzt[TM] jetzt so wie beabsichtigt.
Endergebnis: ~~~php // Callback-Funktion für Sortierreihenfolge; müssen [-1|0|1] zurückgeben!
function personen_sortieren($person1, $person2)
{
// auf Schulleitung prüfen, denn die muss an oberster Stelle stehen!
if(preg_match("/Schulleitung/", $person1['aufgaben']) || preg_match("/Schulleitung/", $person2['aufgaben']))
{
if(preg_match("/Schulleitung/", $person1['aufgaben']) && !preg_match("/Schulleitung/", $person2['aufgaben'])) return -1;
if(!preg_match("/Schulleitung/", $person1['aufgaben']) && preg_match("/Schulleitung/", $person2['aufgaben'])) return 1;
if(preg_match("/stellvertretende/", $person1['aufgaben']) && !preg_match("/stellvertretende/", $person2['aufgaben'])) return 1;
if(!preg_match("/stellvertretende/", $person1['aufgaben']) && preg_match("/stellvertretende/", $person2['aufgaben'])) return -1;
}
// Nachnamen vergleichen
if($person1['nachname'] != $person2['nachname']) return strcmp(strtolower($person1['nachname']), strtolower($person2['nachname']));
//Vornamen vergleichen
if($person1['vorname'] != $person2['vorname']) return strcmp(strtolower($person1['vorname']), strtolower($person2['vorname']));
// Anreden vergleichen
if($person1['anrede'] != $person2['anrede']) return strcmp(strtolower($person1['anrede']), strtolower($person2['anrede']));
return 0;
}
Deine Einwände waren sehr anregend und hilfreich für mich. Mit dem Umstellen auf eine assoziative Struktur meiner Arrays habe ich tatsächlich vieles vereinfachen können!
Danke!
Liebe Grüße aus [Ellwangen](http://www.ellwangen.de/),
Felix Riesterer.