Felix Riesterer: Arrays sortieren. Special case ;-)

Beitrag lesen

Lieber Kristof,

Array soll nach dem Wert "d" des Subarrays sortiert werden.

Du suchst usort().

usort() verlangt einen Funktionsnamen als zweiten Parameter, eine Callback-Funktion. Diese Callback-Funktion bekommt traditionell zwei zu vergleichende Werte übermittelt und muss nun einen der folgenden Werte zurückliefern:

-1 : Der erste Wert ist kleiner als der zweite
 0 : Die Werte sind gleich groß
 1 : Der erste Wert ist größer als der zweite

In Deinem Fall könnte das so aussehen:

function vergleiche_d($arr1, $arr2) {  
    $wert1 = $arr1['d'];  
    $wert2 = $arr2['d'];  
    if ($wert1 < $wert2)  
        return -1;  
    if ($wert1 > $wert2)  
        return 1;  
    if ($wert1 == $wert2)  
        return 0;  
}  
  
$hat_geklappt = usort ($array, 'vergleiche_d');

Die Callback-Funktion kann man natürlich auch kürzer schreiben:

function vergleiche_d($arr1, $arr2) {  
    if ($arr1['d'] == $arr2['d'])  
        return 0;  
    return ($arr1['d'] < $arr2['d']) ? -1 : 1;  
}  
  
usort($array, 'vergleiche_d');

Liebe Grüße aus Ellwangen,

Felix Riesterer.