Felix Riesterer: Sortierreihenfolge!!!

Beitrag lesen

Lieber Thomas,

Sortierung geht bei Arrays am ehesten mit usort(). Diese Funktion braucht eine sogenannte Callback-Funktion (die Du definierst), um zu entscheiden, welches der beiden verglichenen Elemente nun in der Reihenfolge vor dem anderen steht. In Deinem Code könnte man usort() sehr leicht verwenden. Ich habe Dein Beispiel etwas modifiziert:

  
 // Sortier-Callback-Funktion  
 function bestzeiten_vergleichen($wert1, $wert2)  
    {  
    // usort will zwei Werte verglichen haben und übergibt diese an die Callback-Funktion  
    $bestzeit1 = substr($wert1, strpos($wert1, ";")); // Bestzeiten "herauslösen"  
    $bestzeit2 = substr($wert2, strpos($wert1, ";"));  
    // Damit usort() weiß, welcher Wert zuerst stehen muss, braucht es einen  
    // Rückgabewert: (-1|0|1). "-1" bedeutet $wert1 ist kleiner als $wert2.  
    // "1" bedeutet $wert1 ist größer als $wert2, und "0" bedeutet "gleichwertig".  
  
    return strnatcomp($bestzeit1, $bestzeit2);  
  
    // strnatcmp() vergleicht zwei Strings auf "natürliche" Weise und gibt einen  
    // passenden Rückgabewert. Da die Bestzeiten als Zeichenketten und nicht als  
    // Dezimalzahlen vorliegen, ist diese Funktion in diesem Zusammenhang sehr  
    // praktisch. ;-) Beispiel ungeprüft!  
    }  
  
 //schleife  
 $azeiten[$startzahl]=$bestzeit1.";".$f1.";".$team;  
  
 //schleife ende  
  
 // Array "$azeiten" sortieren (nach Bestzeiten)  
  
 usort($azeiten, "bestzeiten_vergleichen");  
  
 // Array ausgeben  
 foreach ($azeiten as $value)  
 {  
 $bestenliste= explode(";",$value);  
 echo "Bestzeit:".$bestenliste[0].  
 "Fahrer:".$bestenliste[1].  
 "Team:".$bestenliste[2];  
 }

Vielleicht hilft Dir dieses Beispiel... Hoffentlich.

Liebe Grüße aus Ellwangen,

Felix Riesterer.