Frage

Ich habe ein mehrdimensionales Array wie folgt:

array ([0] => array ([id] => 1 [name] => john doe [title] => Mr [days] => 10) 
[1] => array ([id] => 2 [name] => Joe Smith [title] => Dr [days] => 22) 
[2] => array ([id] => 3 [name] => John Jones [title] => Mr [days] => 3))

Ich brauche die inneren Anordnungen so sortieren, dass die Daten in der natürlichen Ordnung der Tage Schlüssel zurückgegeben werden.

I.E wie folgt aus:

array ([2] => array ([id] => 3 [name] => John Jones [title] => Mr [days] => 3)
[0] => array ([id] => 1 [name] => john doe [title] => Mr [days] => 10) 
[1] => array ([id] => 2 [name] => Joe Smith [title] => Dr [days] => 22))

Ich denke, was ich brauche, ist eine Funktion, den natsort zu einem mehrdimensionalen Array von $ key gilt, aber bisher habe ich nicht in der Lage gewesen, alle Funktionen zu finden, die als Standardsortierung etwas anderes tun.

Jede Hilfe?

War es hilfreich?

Lösung

Was Sie wollen, ist usort .

Sie können einen Rückruf schreiben den Vergleich für Sie tun:

usort($data, function($a, $b) {
    return ($a['days'] > $b['days'])
           ? 1 
           : ($a['days'] < $b['days'])
             ? -1 
             : 0;
});

Hinweis: Sie benötigen PHP 5.3.x für diese Arbeit, sonst müssen Sie greifen auf create_function oder vordefinieren die Vergleichsfunktion.

Andere Tipps

Ein bisschen einen anderen Ansatz:

$days = array();
foreach($array as $key => $val) {
    $days[$key] = $val['days'];
}
array_multisort($days, $array); //$array being your input array

Ergebnis:

Array
(
    [0] => Array
        (
            [id] => 3
            [name] => Jay Doe
            [title] => Mr
            [days] => 3
        )

    [1] => Array
        (
            [id] => 1
            [name] => John Doe
            [title] => Mr
            [days] => 10
        )

    [2] => Array
        (
            [id] => 2
            [name] => Joe Doe
            [title] => Mr
            [days] => 22
        )

)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top