Why does is_int
always return false in the following situation?
echo $_GET['id']; //3
if(is_int($_GET['id']))
echo 'int'; //not executed
Why does is_int always return false?
Because $_GET["id"]
is a string, even if it happens to contain a number.
Your options:
Use the filter extension. filter_input(INPUT_GET, "id", FILTER_VALIDATE_INT)
will return an integer typed variable if the variable exists, is not an array, represents an integer and that integer is within the valid bounds. Otherwise it will return false
.
Force cast it to integer (int)$_GET["id"]
- probably not what you want because you can't properly handle errors (i.e. "id" not being a number)
Use ctype_digit()
to make sure the string consists only of numbers, and therefore is an integer - technically, this returns true
also with very large numbers that are beyond int
's scope, but I doubt this will be a problem. However, note that this method will not recognize negative numbers.
Do not use:
is_numeric()
because it will also recognize float values (1.23132)If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With