Hola,
is_numeric() mira si el paramtero que le pasas es numerico. El parametro que le psas es $valor{0}. Estas haciendo lo mismo que:
Código PHP:
$temp=$valor{0};
if (is_numeric($temp))
Es decir, solo miras el primer caracter de la cadena. Para mirar si es numerico toda la cadena, pasale $valor.
Saludos.