Ver Mensaje Individual
  #16 (permalink)  
Antiguo 01/07/2011, 03:53
Avatar de Eleazan
Eleazan
 
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 3 meses
Puntos: 326
Respuesta: is_numeric(1) = FALSE?

is_numeric devuelve true si es un número (aunq sea una cadena, si contiene un número sólo, será true tb!). False en caso de no ser un número.

por ejemplo:
Código PHP:
$a '1';
$b '123';
$c "1";
$d 1;
$e = (string)1;

echo 
'$a -> ';
echo 
is_numeric($a);
echo 
"<br>";

echo 
'$b -> ';
echo 
is_numeric($b);
echo 
"<br>";

echo 
'$c -> ';
echo 
is_numeric($c);
echo 
"<br>";

echo 
'$d -> ';
echo 
is_numeric($d);
echo 
"<br>";

echo 
'$e -> ';
echo 
is_numeric($e);
echo 
"<br>";

echo 
var_dump($e); 
Te dará como resultado:
$a -> 1
$b -> 1
$c -> 1
$d -> 1
$e -> 1
string(1) "1"

Todo true, y el último elemento está forzado para ser una string ;)

Así pues, la forma correcta (sin forzar conversión ¬¬) sería
Código PHP:

if ( is_numeric($id) ) {
     
//Aqui lo q hay que hacer si es un número (en teoria, siempre!)
     
}
else {
    
//Mensaje de error? $id no es un número!
   

Si fuerzas la conversión (si pones (int)$id ) puede falsear resultados!