My understanding is…
if is_numeric($input) === true
then either
is_float($input) === true OR
is_int($input) === true OR
$input === 0 OR
$input is a numeric string (meaning it’d satisfy one of the first 3 if it weren’t wrapped in quotes).
Is that accurate? Are there other differences?
See PHP’s documentation on is_numeric. It talks about everything that is allowed, and it’s more than
is_floatandis_int.It’s also important to note that
is_intonly works on things that are type integer, meaning string representations are not allowed. This is a common problem when verifying that form input is an integer. You should usefilter_varor something from the filter family with the filterFILTER_VALIDATE_INT. For floats, useFILTER_VALIDATE_FLOAT.Also, if the reason you are trying to check for an integer is to validate a parameter as being an int, then in PHP 7 you can do this:
PHP 7 has two different modes for converting to int; this answer explains it a bit more.
Note that this is probably not what you want if you are validating the contents of a form element. Use the
filter_varsolution for that.