Rolf B: Daten aus DB in Tabelle ausgeben / Programmiertechnik

Beitrag lesen

Hallo Jörg,

Schön wärs, wenn wir hier ein datum hätten

Kopierfehler meinerseits. Eine Sortierung ist, wenn Du die Einträge im PHP aus dem Array raussuchst und dem Datum zuordnest, vielleicht gar nicht mehr nötig. Das ist jetzt eher die Frage, was man fachlich braucht. Vielleicht nach dem Start-Datum sortieren.

Bin ich denn wirklich so viel schneller, wenn ich mir zu einem Datum YYYY-mm-dd den Kategorieeintrag aus dem 2.Array heraus suche

Die DB muss es ja auch suchen. Unterm Strich muss der Aufwand also auf jeden Fall getrieben werden.

Ein in-memory Search in einem Array ist aber immer schnell genug, sofern Du keinen Blödsinn programmierst. Die Stunden-Einträge kannst Du assoziativ ablegen, d.h. ein Array auf Stufe 1, dessen Schlüssel der Datumsstring ist, und darin ein Array mit den Stunden-Rows für dieses Datum. Das ist sozusagen Direktzugriff. Sowas hast Du ja jetzt schon.

Da kannst Du auch so vorgehen, dass Du dieses Array auch als Leitstruktur verwendest. D.h. bevor Du die DB liest, erzeugst Du pro Datum einen Eintrag:

$stunden[$cDatum] = ARRAY();

und hängst die Stunden-Rows an das passene Datum an, so dass Du nachher nur noch mit foreach ($stunden as $cDatum => $stundenEinträge) drüberlaufen musst.

Die Sondereinträge sind da schon schwieriger, weil Du Einträge finden musst, wo das Datum in einem Intervall liegt. D.h. du kannst da nur ein Array aus den Sonder-Rows machen und das sequenziell durchlaufen. Natürlich kann man noch Tricks mit Datenstrukturen einsetzen, um das zu beschleunigen, aber da stellt sich die Frage nach dem Aufwand. Wenn Du nur zehn Sonder-Rows für eine Auswertung hast, lohnt sich das nicht. Das wird eher ab 1000 Sonder-Rows interessant.

Beim Programmieren achtet man zuerst auf Verständlichkeit und Einfachheit. Nur, wenn man damit in Zeitprobleme kommt, baut man komplexere Strukturen, die ggf. laufzeiteffizienter sind.

Rolf

--
sumpsi - posui - obstruxi