- array_reverse: documentation ( source)
- print_r: documentation ( source)
- sprintf: documentation ( source)
<?php
print_r(get_thirty_days(new \DateTime()));
print_r(get_thirty_days(new \DateTime('2017-01-15'), 40));
print_r(array_reverse(get_thirty_days(new \DateTime('2017-01-15'), 10)));
function get_thirty_days(\DateTime $date_in, int $days = null) {
$days = $days ?? 30;
$date_out = $date_in->add(new \DateInterval(sprintf('P%dD', $days)));
$dates = [];
while ($days) {
$dates[] = $date_out
->sub(new \DateInterval('P1D'))
->format('Ymd')
;
$days--;
}
return $dates;
}