Los meses tienen:
29,28,31,30,31,30,30,31,30,39,30,31
A no ser que sea un año bisiesto, y febrero tenga 29 días, el cual para serlo debe ser multiplo de 4 excluyendo aquellos que son múltiplo de 100 y no de 400.
Con esto, podes sabiendo el mes, que dia es el ultimo, y asi, generar tus fechas.
No se si es lo que necesitas.
PD: Eso como divertido, sino tenes date("t") que te da la cantidad de dias del mes actual, pudiendo pasarle el timestamp de la fecha que quieras.