У меня в обоих случаях возвращается true:
var_dump(is_numeric(0));
var_dump(is_int(0));
Результат:
bool(true)
bool(true)
var_dump(is_int("0"));
Выдаст false, потому что вы передаете ему ноль как строковый литерал. Вы можете попробовать передать то же самое как переменную, которая прошла через (я полагаю) parseInt("");
Хотя мой php может быть немного не в порядке, так как последнюю неделю или две я безостановочно работал на Javascript.