is_numeric() devuelve true tanto con números enteros como con decimales. Con php hay problemas para ver si un número es realmente entero, justamente debido a que una variable es convertida a int o a string dependiendo del contexto. Mira esta función, te puede ser útil:
Código PHP:
function _is_int($str) {
return (string)$str === (string)(int)$str;
}
Saludos,