3v4l.org

run code in 300+ PHP versions simultaneously
<?php function rangeWeek(string $start,string $end): array{ $dtStart = date_create($start); $dtEnd = date_create($end); $weeks = []; while($dtStart <= $dtEnd){ $weeks[] = [ 'start' => $dtStart->format('Y-m-d'), 'end' => min($dtEnd,$dtStart->modify('Sunday this week'))->format('Y-m-d'), 'week' => $dtStart->format('W') ]; $dtStart->modify('next Monday'); } return $weeks; } $startDate = '2022-08-08'; //Monday $endDate = '2022-08-23'; //Tuesday $weeks = rangeWeek($startDate, $endDate); var_dump($weeks);
Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.27, 8.4.1 - 8.4.14
array(3) { [0]=> array(3) { ["start"]=> string(10) "2022-08-08" ["end"]=> string(10) "2022-08-14" ["week"]=> string(2) "32" } [1]=> array(3) { ["start"]=> string(10) "2022-08-15" ["end"]=> string(10) "2022-08-21" ["week"]=> string(2) "33" } [2]=> array(3) { ["start"]=> string(10) "2022-08-22" ["end"]=> string(10) "2022-08-23" ["week"]=> string(2) "34" } }

preferences:
119.25 ms | 408 KiB | 5 Q