4 Pluspunkte 0 Minuspunkte

Wie kann ich ein multidimensionales Array anhand eines Wertes im Array sortieren? Z.B dieses Array anhand der Werte in "test".

Array
(
    [0] => Array
        (
            [id] => 4231
            [order] => Array
                (
                    [test] => 11
                )

        )

    [1] => Array
        (
            [id] => 15648
            [order] => Array
                (
                    [test] => 14
                )

        )

    [2] => Array
        (
            [id] => 4562
            [order] => Array
                (
                    [test] => 9
                )

        )

)

von  

2 Antworten

3 Pluspunkte 0 Minuspunkte

Die Funktion usort() ermöglicht es, eine Vergleichsfunktion anzugeben, die verwendet wird, um die Elemente im Array zu vergleichen und zu sortieren.

// Benutzerdefinierte Vergleichsfunktion
function compareByTestValue($a, $b) {
    return $a['order']['test'] - $b['order']['test'];
}

// Das Array nach dem Wert in 'test' sortieren
usort($myArray, 'compareByTestValue');

von (542 Punkte)  
2 Pluspunkte 0 Minuspunkte

Mit der Funktion array_multisort().

// Funktion, um Werte zu extrahieren
function extractTestValue($item) {
    return $item['order']['test'];
}

// Extrahiere den 'test'-Wert aus jedem Unterarray
$testValues = array_map('extractTestValue', $myArray);

// Sortiere $myArray anhand der $testValues
array_multisort($testValues, SORT_ASC, $myArray);
von (776 Punkte)