如果我想使用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"
答案 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中所述。
您可以通过打印出通过过滤器的各种值的结果轻松地自行测试。