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!