Мое понимание …
if is_numeric($input) === true
то либо
is_float($input) === true ИЛИ
is_int($input) === true ИЛИ
$input === 0 ИЛИ
$input – это числовая строка (это означает, что она удовлетворит одно из первых 3, если оно не будет включено в кавычки).
Это точно? Существуют ли другие различия?
См. Документацию PHP по is_numeric . Он говорит обо всем, что разрешено, и это больше, чем is_float и is_int .
Также важно отметить, что is_int работает только с вещами типа integer, что означает, что представления строк не допускаются. Это обычная проблема при проверке того, что ввод формы является целым числом. Вы должны использовать filter_var или что-то из семейства фильтров с фильтром FILTER_VALIDATE_INT . Для поплавков используйте FILTER_VALIDATE_FLOAT .
Кроме того, если причина, по которой вы пытаетесь проверить целое число, заключается в том, чтобы проверить параметр как int, а затем в PHP 7 вы можете сделать это:
function foo(int $i) { // $i is guaranteed to be an int (is_int) will be true }
PHP 7 имеет два разных режима преобразования в int; этот ответ объясняет это немного больше.
Обратите внимание, что это, вероятно, не то, что вы хотите, если вы проверяете содержимое элемента формы. Для этого filter_var решением filter_var .
См. Документы . Числовое значение может быть: