My understanding is...
if is_numeric($input) === true
then either
is_float($input) === true
OR
is_int($input) =
See the docs. A numeric value can be:
See PHP's documentation on is_numeric. It talks about everything that is allowed, and it's more than is_float
and is_int
.
It's also important to note that is_int
only 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 use filter_var
or something from the filter family with the filter FILTER_VALIDATE_INT
. For floats, use FILTER_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:
function foo(int $i) {
// $i is guaranteed to be an int (is_int) will be true
}
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_var
solution for that.