Hola,
En realidad, siguiendo la lógica del segmento de código que has publicado, resulta curioso pensar que hubiera funcionado del modo que mencionas. Es realmente interesante la expresión " $dy+$dias-date("w",mktime(0,0,0,$mnth,$dy,$yr)) ", aunque no entiendo su propósito en este caso específico.
Posiblemente el código haya sido modificado con el tiempo, y ahora calcula otro valor distinto orientado hacia otra cosa distinta, o quizás, por pura casualidad, devuelve valores válidos para ciertas entradas específicas, y por esto podrías haber pensado que funcionaba correctamente para tu problema.
En fin, para el problema que enuncias, quizás algo como lo siguiente podría servirte:
Código:
function fechaprox ($fecha, $dias)
{
list ($anyo, $mes, $dia) = explode ('-', $fecha);
// Hay aproximadamente 86400 segundos en un dia
return date ('Y-m-d', mktime (0, 0, 0, $mes, $dia, $anyo) +
$dias * 86400);
}
print fechaprox ('2003-08-16', 30);
Un cordial saludo