我试图确保在URL中设置了GET字符串,并且它的值是一个整数,但我无法让它工作。
if (isset($_GET['allusers']) && is_int($_GET['allusers'])) {
echo "works";
}
我的括号做错了什么吗?
> $_GET
变量不能是整数。它将永远是一个字符串。
要测试它是一个数字字符串,请使用is_numeric()
:
if ( isset($_GET['allusers']) && is_numeric($_GET['allusers']) )
{
echo "works";
}
在你的代码中
isset($_GET['allusers'])
将被评估为真实,但is_int($_GET['allusers'])不会,因为$_GET的值是一个字符串,而不是int,你可以修改你的代码
if (isset($_GET['allusers']) && is_int(intval($_GET['allusers']))) {
echo "works";
}
这将起作用
如果您只期望非负整数,请使用ctype_digit
。在这些情况下,这将给出最佳结果,因为它只允许数字0-9
.
请注意,is_numeric
将返回字符串的true
,这些字符串可以转换为整数,包括负数和浮点数。is_numeric
认为true
的几个例子:
-
0xF5
(十六进制) -
-.0e-000
(一种奇怪的表达0.0
的方式) -
-0.4
is_int返回字符串上的false
,这就是GET变量。
var_dump(is_int("23"));
bool(false)
你应该使用is_numeric instad。