Oppure puoi usare date('L') che restituisce 1 se l'anno è bisestile o 0 negli altri casi.Originariamente inviato da Alhazred
Meglio, ma anche qui penso avrà il problema del bisestile, il for viene eseguito 365 volte, un anno bisestile di giorni ne ha 366.
Io farei il controllo sull'anno, si cicla finché si resta all'interno dell'anno iniziale, se si sfora arrivando al successivo ci si ferma.
In questo modo setti prima dell'inizio del ciclo il valore max e non devi calcolare l'anno ad ogni passo (velocizzando così l'esecuzione).