2 Stimmen

Sortieren mehrerer Arrays in PHP

Hat jemand eine Idee, wie kann ich dieses Array nach Schlüssel (Datum) in PHP sortieren?

Array
(   
    [2011-02-16] => Array
        (
            [date] => 2011-02-16
            [num] => 2
        )

    [2011-02-11] => Array
        (
            [date] => 2011-02-11
            [num] => 0
        )

    [2011-02-17] => Array
        (
            [date] => 2011-02-17
            [num] => 0
        )

    [2011-02-18] => Array
        (
            [date] => 2011-02-18
            [num] => 0
        )

)

0voto

Tesserex Punkte 16756

Da Ihr Array bereits das Datum in den Schlüsseln hat, warum nicht einfach verwenden ksort ? Der String-Vergleich sollte gut funktionieren, da Sie das Format JJJJ-MM-td verwenden.

0voto

Colin O'Dell Punkte 7799

http://www.php.net/manual/en/function.array-multisort.php

Würde Beispiel Nr. 3 Ihren Bedürfnissen entsprechen?

0voto

Alexandru Petrescu Punkte 3379

Was Sie wollen, ist UASORT.

http://us3.php.net/manual/en/function.uasort.php

Funktion aussehen würde:

function cmp($a, $b) {
    $d1 = strtotime($a['date']);
    $d2 = strtotime($b['date']);
    if ($d1 == $d2) {
       return 0;
    }
    return ($d1 < $d2) ? -1 : 1;
}

0voto

John Smith Punkte 1690

Eine bessere Antwort wäre die Verwendung von uksort die zum Sortieren verwendet wird Tasten mit einer benutzerdefinierte Funktion (in Anbetracht der Tatsache, dass diese Daten nicht immer vergleichbar sind und nicht mit ksort ohne vorherige Anwendung strtotime zu den Tasten):

function sort_by_date_keys($date_key1, $date_key2) {
    // reverse the order of the $date_keys for "oldest to newest"
    return strtotime($date_key2) - strtotime($date_key1);
);

uksort($array, 'sort_by_date_keys');

Diese Methode ist besser definiert als uasort da es auf Schlüssel zugeschnitten war.

Beispiel:

$array = array(
    '1/1/12' => 'foo1',
    '1/1/13' => 'foo2'
);
uksort($array, 'sort_by_date_keys');

// output
$array = array(
    '1/1/13' => 'foo2',
    '1/1/12' => 'foo1'
);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X