Felix Riesterer: usort() - Verzweiflung naht!

Beitrag lesen

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.