多个PHP IF条件不起作用

时间:2012-06-08 17:36:42

标签: php if-statement

我正在尝试确保在URL中设置了GET字符串,并且它的值是一个整数,但我无法使其工作。

if (isset($_GET['allusers']) && is_int($_GET['allusers'])) {

    echo "works";

}

我的括号做错了吗?

4 个答案:

答案 0 :(得分:5)

$_GET变量不能是整数。它总是一个字符串。

要测试是否为数字字符串,请使用is_numeric()

if ( isset($_GET['allusers']) && is_numeric($_GET['allusers']) )
{
    echo "works";
}

答案 1 :(得分:0)

在您的代码中

isset($_GET['allusers'])

将被评估为真实但是 is_int($ _ GET ['allusers'])不会因为$ _GET的值是一个字符串而不是int你可以修改你的代码

if (isset($_GET['allusers']) && is_int(intval($_GET['allusers']))) {

    echo "works";

}

这将有效

答案 2 :(得分:0)

如果您只期望非负整数,请使用ctype_digit。这将在这些情况下提供最佳结果,因为它只允许 数字0-9

请注意is_numeric将返回true表示可以转换为整数的字符串,包括负数和浮点数。 is_numeric将考虑true的一些示例:

  • 0xF5(十六进制)
  • -.0e-000(一种表达0.0的奇怪方式)
  • -0.4

答案 3 :(得分:-1)

is_int在字符串上返回false,这就是GET变量。

var_dump(is_int("23"));
bool(false)

您应该使用is_numeric instad。