Hi,
$myStart = 1519095600; $myEnd = 1521413999; // sind 4 Wochen in Sekunden von Mo1, 00:00:00 bis So4, 23:59:59
nö, sind es nicht. Die Differenz ist 2318399 (ich hau mal noch 1 drauf, als 2318400): 2318400 / 3600 ergibt 644 Stunden, / 24 ergibt 26,83333 Tage. 4 Wochen wären aber 28 Tage +/- 1 Stunde (Ende März/Ende Oktober weicht's ja etwas ab).
> $myJahr = date('Y',$myStart);
> $myKW = date('W',$myEnd);
Das Jahr vom Start, die Woche vom Ende? Das geht spätestens dann schief, wenn Start und Ende in verschiedenen Jahren liegen …
> $arr_alleWochen[] = $myKW."_".$myJahr; // 1.Eintrag
> $myZeiger = $myStart;
$myZeiger ist jetzt ein Unix-Timestamp.
> while ($myZeiger <= $myEnd) {
> $myZeiger = $myJahr."W".$myKW; // Montag dieser Woche
jetzt ist $myZeiger ein String 2018W11. Warum Du das mit "Montag dieser Woche" kommentierst, erschließt sich mir nicht.
> $next_week = date('W', strtotime($myZeiger." +1 week"))."_".date('Y', strtotime($myZeiger." +1 week +3day"));
Hier wird der Jahreswechsel berücksichtigt (+3day), bei Jahreswechsel zwischen $myStart und $myEnd ist aber schon der erste Eintrag falsch.
> $arr_alleWochen[] = $next_week; // alle weiteren KWs
> $myZeiger = strtotime($myZeiger." +1 week");
Oh, $myZeiger wird jetzt wieder ein Unix-Timestamp. Sehr verwirrend, der ständige Bedeutungswechsel von $myZeiger. Geht Dir das nicht auf den Zeiger? 😉
Ach ja, Einrückungen würden den Code besser lesbar machen.
cu,
Andreas a/k/a MudGuard