Hola amigo!
De acuerdo al manual:
is_nan — Encuentra si un valor no es un número (
devuelve true si el parámetro NO es número )
is_numeric - Comprueba si una variable es un número o un string numérico (
devuelve true si el parámetro es número o una cadena numérica )
El código de
xerifandtomas podría quedar a 6 líneas, únicamente lo desgloso así para que se entendiera.
Por otra parte, podrías revisar el nuevo
operador nave espacial que trabaja la
nueva versión de PHP.
Saludos!