Sven Rautenberg: usort() - bisher nur leichte Verbesserungen

Beitrag lesen

Moin!

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.

Naja, das, was du in den Strings suchst, sollte auch mit strpos() zu finden sein. Wenn es nicht vorkommt, ist (strpos(...)===false) wahr. Wenn es vorkommt, ist (strpos(...)!==false) wahr.

Und eine logische Reihenfolge kann man natürlich auch innerhalb der Suchfunktion herstellen, indem man gefundene Teilstrings in Werte übersetzt und die dann vergleicht, wie gezeigt.

  
    // Schulleitung im String ergibt 2 "Punkte", sonst 0.  
    $p1ord = (strpos($person1['aufgaben'],"Schulleitung")===false?0:2);  
    $p2ord = (strpos($person2['aufgaben'],"Schulleitung")===false?0:2);  
  
    // "stellvertretende" im String ergibt 1 "Punkt"  
    $p1ord = (strpos($person1['aufgaben'],"stellvertretende")===false?0:1);  
    $p2ord = (strpos($person2['aufgaben'],"stellvertretende")===false?0:1);  
  
    if($p1ord != $p2ord)  
    {  
      return ($p1ord > $p2ord? -1 : 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;  
>    }  

- Sven Rautenberg

--
My sssignature, my preciousssss!