3v4l.org

run code in 300+ PHP versions simultaneously
<?php /** * @param string $start * @param string $end * * @return string[] */ function date_period_grid($start, $end) { $start = new DateTime($start); $end = new DateTime($end); $interval = $end->diff($start); $days = $interval->days; $months = $interval->y * 12 + $interval->m; $years = intval($end->format('Y')) - intval($start->format('Y')); if ($years > 1) { $period = new DatePeriod($start, new DateInterval('P1Y'), $years); $format = 'Y'; } elseif ($months > 1) { $period = new DatePeriod($start, new DateInterval('P1M'), $months); $format = 'm.Y'; } else { $period = new DatePeriod($start, new DateInterval('P1D'), $days); $format = 'd.m.Y'; } $result = []; foreach ($period as $date) { $result[] = $date->format($format); } return $result; } var_dump(date_period_grid('2012-07-01', '2015-11-01')); var_dump(date_period_grid('2015-01-01', '2015-11-01')); var_dump(date_period_grid('2015-10-01', '2015-11-01'));
Output for 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
array(4) { [0]=> string(4) "2012" [1]=> string(4) "2013" [2]=> string(4) "2014" [3]=> string(4) "2015" } array(11) { [0]=> string(7) "01.2015" [1]=> string(7) "02.2015" [2]=> string(7) "03.2015" [3]=> string(7) "04.2015" [4]=> string(7) "05.2015" [5]=> string(7) "06.2015" [6]=> string(7) "07.2015" [7]=> string(7) "08.2015" [8]=> string(7) "09.2015" [9]=> string(7) "10.2015" [10]=> string(7) "11.2015" } array(32) { [0]=> string(10) "01.10.2015" [1]=> string(10) "02.10.2015" [2]=> string(10) "03.10.2015" [3]=> string(10) "04.10.2015" [4]=> string(10) "05.10.2015" [5]=> string(10) "06.10.2015" [6]=> string(10) "07.10.2015" [7]=> string(10) "08.10.2015" [8]=> string(10) "09.10.2015" [9]=> string(10) "10.10.2015" [10]=> string(10) "11.10.2015" [11]=> string(10) "12.10.2015" [12]=> string(10) "13.10.2015" [13]=> string(10) "14.10.2015" [14]=> string(10) "15.10.2015" [15]=> string(10) "16.10.2015" [16]=> string(10) "17.10.2015" [17]=> string(10) "18.10.2015" [18]=> string(10) "19.10.2015" [19]=> string(10) "20.10.2015" [20]=> string(10) "21.10.2015" [21]=> string(10) "22.10.2015" [22]=> string(10) "23.10.2015" [23]=> string(10) "24.10.2015" [24]=> string(10) "25.10.2015" [25]=> string(10) "26.10.2015" [26]=> string(10) "27.10.2015" [27]=> string(10) "28.10.2015" [28]=> string(10) "29.10.2015" [29]=> string(10) "30.10.2015" [30]=> string(10) "31.10.2015" [31]=> string(10) "01.11.2015" }

preferences:
258.18 ms | 408 KiB | 385 Q