PHP - 使用filter_var()函数

时间:2015-11-26 15:38:28

标签: php function boolean

如果我想使用filter_var()函数来验证整数,我会在网络上看到我应该写这样的东西:

if (filter_var($int, FILTER_VALIDATE_INT) !== false){
    echo 'Integer ok';
}else{
    echo 'Not an integer';
}

据我所知,如果$ int的内容未被计算为整数或者返回$ int内的整数,则表达式filter_var($ int,FILTER_VALIDATE_INT)将返回false。

因为任何整数都被PHP评估为真(当然除了0),我想知道这样做的具体区别:

if (filter_var($int, FILTER_VALIDATE_INT) !== false)

或者这个:

if (filter_var($int, FILTER_VALIDATE_INT) == true)

对于哪些值,这两个表达式会发送不同的结果吗?

我还有另一个问题:如果我的变量$ int包含布尔值true,那么结果将是'整数确定'它似乎。我们是否有义务孤立此案?因为每个人都会谈论很多关于"数字的开头是0"案件,但不是关于这一个...

谢谢!

编辑:请不要建议我使用其他方法来验证整数,我不想使用其他方法。事实上,我想了解PHP如何真正深入工作。这就是为什么我想知道总是看到"!== false"而且从不简单地" == true"

2 个答案:

答案 0 :(得分:0)

您也可以使用ctype_digit(),试试这个:

if (!ctype_digit($int)) {
    echo 'Not an integer';
} else {
     echo 'Integer ok';
}

答案 1 :(得分:0)

不同之处在于,当整数为0时,检查false仍然有效,正如您已经指出的那样,而检查为true则需要额外检查0。

布尔值为true将返回值为1的有效int,如过滤器的PHP手册页上的this comment中所述。

您可以通过打印出通过过滤器的各种值的结果轻松地自行测试。