Pra somar 1 mês, poderia ser assim:
// primeiro dia do mês atual
$current = strtotime('first day of this month midnight');
// data inicial
$data = strtotime('2023-05-01');
while ($data <= $current) { // enquanto for menor que o primeiro dia do mês atual
// faz algo com a data (aqui vou só imprimir)
echo date('Y-m-d', $data). "\n";
// soma 1 mês
$data = strtotime('+1 month', $data);
}
Consulte a documentação para mais detalhes.
Ou, usando DateTime
e DateInterval
:
$current = new DateTime('first day of this month midnight');
$periodo = new DateInterval('P1M'); // 1 mês
$data = new DateTime('2023-05-01');
while ($data <= $current) {
// faz algo com a data...
echo $data->format('Y-m-d'). "\n";
// soma 1 mês
$data->add($periodo);
}
O DateInterval
possui um formato mais específico, baseado na norma ISO 8601, como por exemplo P2M10DT5H20S
(2 meses, 10 dias, 5 horas e 20 segundos). Consulte a documentação para mais detalhes.