Мое понимание …
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
.
См. Документы . Числовое значение может быть: