is_int() is type-sensitive, so will return false if the argument is a string:
echo is_int(1); // TRUE
echo is_int("1"); // FALSE
You could do something like:
if(is_numeric($value) and (int)$value == $value)
{
$value = (int)$value; // cast to int type for rest of script
}
else
{
// handle error condition for non-integer value being entered
}