多个 PHP IF 条件不起作用


Multiple PHP IF conditions not working

我试图确保在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。