Hi,
why always i get false?
even in a this situation:
echo $_GET['id']; //3
if(is_int($_GET['id']))
echo 'int';
Hi,
why always i get false?
even in a this situation:
echo $_GET['id']; //3
if(is_int($_GET['id']))
echo 'int';
Because $_GET['id'] is a string like other parts of query string. You are not converting it to integer anywhere so is_int return false.
why always i get 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 not perfect: It will also recognize float values (1.23132)is_numeric() that will correctly recognize the string
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.
Because HTTP variables are always either strings, or arrays. And the elements of arrays are always strings or arrays.
You want the is_numeric function, which will return true for "4". Either that, or cast the variable to an int $foo = (int) $_GET['id']...
Because $_GET is an array of strings.
To check if the get parameter contains an integer you should use is_numeric()