[PHP] Sortieren nach Datum
-
Hallo,
ich habe eine zweidimensionale Array, in deren jeweils eine Datum (d.m.Y) und ein dazugehöriger Text gespeichert ist. Nun will ich diese Array in chronologischer Reihenfolge sortieren. Alle Elemente, die vor dem aktuellen Datum liegen, sollen außerdem aussortiert werden. Wie kann ich dies realiseren ?p.s. Ich lese das aus einer Textdatei ein, also gibt es keine Möglichkeit dies mit einer Datenbank zu erledigen.
Bin über Hilfe sehr erfreut, Michamab.
-
Normalerweise könntest du ein Array mit ksort nach dem Schlüssel sortieren, aber wenn du das Datum im Format d.m.Y hast, dann musst du es erst umwandeln (z.B. in YYYY-MM-DD oder einen timestamp) und dann sortieren
-
Da solltest du dir aber Gedanken machen wo die Daten her kommen.
SOllten sie aus einer DB kommen kannst du da schon sortieren lassen.
Aus einem File. Besser wenn du da gleich die UNIX-Time zum Datum errechnest. Dann kannst du alles sortieren wie du willst und bei der Ausgabe da eben zurückrechnen.
-
Wie gesagt, ich lese die Daten aus einer Datei ein. Das umwandeln in YYYY-MM-DD ist ja kein Problem, bloß habe ich keine Ahnung, wie man mit ksort das nun sortieren kann, in der Doku ist die Funktion leider nur sehr mager beschrieben.
Weiters stellt sich auch noch die Frage, wie ich die Daten dann vergleichen kann, also liegt Datum a vor oder nach Datum b.
Danke schonmal.
-
Michamab schrieb:
in der Doku ist die Funktion leider nur sehr mager beschrieben.
Was ist dir denn nicht klar?
ksort() ist ja recht simpel, bei uksort() oder so, würde ich es ja verstehen - aber ksort() nimmt nur einen Parameter (der rest ist ja optional und kann weggelassen werden) und dieser eine Parameter ist dein array...Weiters stellt sich auch noch die Frage, wie ich die Daten dann vergleichen kann, also liegt Datum a vor oder nach Datum b.
Wenn du es als timestamp hast, mit den normalen Vergleichsoperatoren, ansonsten schau dir mal mktime() an - damit kannst du recht leicht einen timestamp erstellen...
-
Wenn du den String im YYYY-MM-DD Format hast kannst du in PHP z.B. einfach die Strings mit > bzw. < vergleichen (effizienter, wenn du das öfters machen willst ist es aber sicher, wenn du das ganze in einen Timestamp umwandelst)
Zu ksort: Wo ist da dein Problem? Du brauchst doch einfach nur ksort($deinArray); aufzurufen
-
Super danke, dachte nicht, dass das alles so simpel wäre :xmas1:
-
wenn du nur eine wert aus diesem array brauchst warum legts du dann ein ganzes array an?
Solltest du die öfters brauchen dann würde ich gleich bei einlesen aus der datei umwandeln in UNIX-Timestamp. Solltest du eine Wert darauf brauchen dann eben wieder diesen eine Wert zurück.
So musst du nicht immer ganze array umkopieren .