Peraltro...... $now da dove esce fuori?
E la data del compleanno da controllare se passata o futura????
Io riscriverei il codice così!
Codice PHP:
$today = time(); //giornata odierna - in formato timestamp
$compleanno = xxx;
/*
qui non so come fai a recuperare la data
se da DB o meno ed in quale formato
Eventualmente la porti in formato Timestamp con strtotime()
*/
// controlli se il compleanno è già passato
if ($today > $compleanno) {
// il compleanno è già passato per cui aggiungi
// un anno alla data odierna poi fai la differenza
} else {
// il compleanno deve ancora arrivare
// fai direttamente la differenza
}
Spero di essere stato chiaro.