Array mit Minuten eines Zeitraumes

luchs3

Erfahrenes Mitglied
Hi,

Ich muss ein Array über einen Zeitraum erstellen.
Das Ganze soll im Minutentakt erfolgen (pro Minute eine Zeile). Das bedeutet z.B. von 200902230000 bis 200902240000 würden 1440 Zeilen ergeben.
Während dieser Schleife sollen die Datums- und Zeitwerte mit einer db- Abfrage verglichen, und falls vorhanden, der Wert aus der db in das Array geschrieben werden

Ich habe mir das ca. so vorgestellt.

PHP:
for ($i=200902230000; $i<=200902240000; $i+1minute) {

    while (db- Abfrage....

}
Leider habe ich ja 60 Minuten, bzw. zw. 28 und 31 Tage, die ich dabei berücksichtigen muss.
 
Das könntest du mit Hilfe der date Funktion und einem timestamp lösen.
Du musst nur den timestamp der Anfangs- und Endzeit ermitteln und dann der date Funktion übergeben.
 
Sorry, aber der Knopf löst sich nicht.
Die Zeilenzahl kann ich berechnen, aber wie kann ich die einzelne Zeile einem Datum- und Zeitwert zuordnen?

Ich könnte die Differenz von Anfang und Ende durch die Anzahl der benötigten Zeilen dividieren und wieder umwandeln.
Die Frage ist, wie genau die Werte dann sind, da ich ja runden muss, wie hier. Wenn dann ein falscher Minutenwert heraus kommt ist das ganze für die Fische, weil sich der Rundungsfehler mit jedem Durchlauf vergrößern würde.
 
Moin,


ich hab das jetzt 10x durchgelesen...warum musst du etwas runden?:rolleyes:

Wenn du weisst, wann Anfangs-&Endzeitpunkt sind, nehme den Anfangszeitpunkt(als UNIX-Timestamp) und zähle solange 60 dazu, bis der Endzeitpunkt erreicht ist...da gibt es nichts zu runden, 60 Sekunden sind 60 Sekunden.

Was das zuordnen der "Zeile" betrifft...ich gehe mal davon aus, dass du damit die einzelnen Array-Elemente meinst: Da könntest du als Key den Timestamp nehmen.

Beachte dass du in deinem Beispiel in der Schleife offensichtlich einen MYSql-Timestamp hast...damit kann PHP nichts anfangen.

Besteht für deine Anwendung überhaupt die Notwendigkeit, für alle Minuten ein Array-Element zu haben(auch für die, zu denen nichts in der DB steht?)
Falls nicht, dürfte es performanter sein, wenn du das Pferd von der anderen Seite aufzäumst....alle Datensätze des betreffenden Zeitraumes holen und aus den Ergebnissen den Array erstellen.
 
Zuletzt bearbeitet:
Das habe ich mir auch gedacht, aber irgendwas mache ich dabei falsch. Das läuft viel zu lange.

PHP:
$startdatum = mktime(0, 0, 0, $in[month], $in[day], $in[year]);
$enddatum = mktime(0, 0, 0, $out[month], $out[day], $out[year]);
$n=1;

for ($i = $startdatum; $i <= $enddatum; $i+60) {
     $n++;
}

echo 'Zeilensumme: '.$n.'<br>';
 
Jaja, diese kleinen Dinge machen es aus :-(.

Aber eine letzte Sache hätte ich noch.
Er macht jetzt einen Durchlauf zu viel.
Wenn der gleiche Tag angegeben wird, habe ich eine Zeile.
 
Zurück