Luché contra el mismo problema, y sucedió que había un espacio después del número.
cuento largo, lo que cada vez el número es:
is_numeric(" 0.0") --> YES
is_numeric("0.0 ") --> NO
Aquí es un ejemplo ...
public function getCoordinates()
{
return sprintf('%1$f , %2$f',$this->getLatitude(),$this->getLongitude());
}
Más adelante en el proceso ...
$myarr = explode(",",$_ScreenCoordinates);
echo "_ScreenCoordinates:$_ScreenCoordinates<br>";
echo "myarr[0]:".$myarr[0]." - ".((is_numeric($myarr[0]))?"YES":"NO")."<br>";
echo "myarr[1]:".$myarr[1]." - ".((is_numeric($myarr[1]))?"YES":"NO")."<br>";
echo "trimmed[0]:".$myarr[0]." - ".((is_numeric(trim($myarr[0])))?"YES":"NO")."<br>";
Impreso en la pantalla:
Array ([0] => 1.200000 [1] => 123.456000)
_ScreenCoordinates:1.200000 , 123.456000
myarr[0]:*1.200000 * - NO
myarr[1]:* 123.456000* - YES
trimmed[0]:*1.200000 * - YES
no repro, 'is_numeric (0)' devuelve 'bool (true)' para mí. lo mismo con 'is_int' – SilentGhost
@Industrial: ¿Estás seguro? http: //www.ideone.com/h5CSa – kennytm
¿Seguro que no es la letra O en lugar de cero? –