Array sortieren

Grunge

Erfahrenes Mitglied
Hallo Leute,

ich habe ein kleines Problem mit dem sortieren eines Arrays.

in einer while schleife fülle ich das Array "Nachrichten" mit den Details aus der Datenbank.

Im Anschluss soll das ganze nun sortiert werden, und zwar nach dem Datum, und das letzte zuerst.

Code:
$nachrichten[] = array('abs' => $msg['abs'],
                              'datum' => $msg['datum'],
                              'msg' => $msg['msg'],
                                  'id' => $msg['msgid']);

Das mache ich wie folgt:

Code:
            $msg_new=_sort($nachrichten, 'datum',  SORT_DESC);


function _sort($array = array (), $art, $reinfolge=SORT_DESC) { 
    if(is_array($array)==true){ 
        foreach ($array as $key => $value) { 
            if(is_array($value)==true){ 
                foreach ($value as $kk => $vv) { 
                    ${$kk}[$key]  = strtolower( $value[$kk]); 
                } 
            } 
        } 
    } 
    array_multisort(${$art}, $reinfolge, $array); 
    return $array; 
}

funktioniert zweifelsohne im Prinzip, nur bei dem Datum scheint er seine Probleme zu haben. Ich schätze mal, dass meine Funktion _sort() damit nicht klar kommt. Das Datum ist im DateTime Format in der SqL gespeichert.

Wie müsste ich die Funktion also nun erweitern, so dass er das Datum sortiert? Ich nehme an ich müsste das Datum splitten?

Mein Gedanke war jetzt:

Erstmal den Datums teil (YYYY-MM-DD) sortieren und dann den Uhrzeit Teil (HH:MM:SS) und später wieder zusammenführen, und es im Array neu zu speichern?

nur wie genau bau ich das in die Funktion ein.
Hat da jemand ne Idee?
 

basti1012

Erfahrenes Mitglied
Kannst du das nicht direkt aus der Datenbank schon sortiert ausgeben lassen ?
Aber mit diesen Code
Code:
function sortieren($a, $b) {
    if ($a['datum'] == $b['datum']) return 0;
    return (strtotime($a['datum']) < strtotime($b['datum'])) ? 1 : -1;
}

usort($nachrichten, "sortieren");
Habe ich die Ausgabe bekommen
http://sebastian1012.bplaced.net/test.php/arraysort.phpWenn ich dich jetzt richtig verstanden habe.
Höchstes Datum steht oben .Kannst du ja noch ändern falls es andersrum sein soll.
 

basti1012

Erfahrenes Mitglied
Bei mir funktioniert beides.
Einmal der Php Code den ich gepostet habe und das die Datenbanken das sortiert ausgeben können wissen wir ja alle.

Mal nee Frage an die Sql,Php Profis.
Es gibt ja DATE,DATETIME und TIMESTAMP.
Sortiert die Datenbank das bei allen Formaten gleich , oder gibt es da Unterschiede ?

Ich könnte mir vorstellen das die Sortierung nach Tmestamp an einfachsten ist , da kann man ja nicht viel falsch machen.
Welches Date Format würdet ihr da empfehlen ?
 

m.scatello

Erfahrenes Mitglied
Wenn nur ein Datum benötigt wird, dann DATE, wenn man auch die Uhrzeit benötigt, dann DATETIME und nur die Uhrzeit mit TIME

Ich könnte mir vorstellen das die Sortierung nach Tmestamp an einfachsten ist
Wieso? Wenn man die Datenbank sortieren lässt, ist doch alles gut.
 

Neue Beiträge