【发布时间】:2015-11-26 15:38:27
【问题描述】:
我在网上到处都看到,如果我想使用 filter_var() 函数来验证一个整数,我应该写这样的东西:
if (filter_var($int, FILTER_VALIDATE_INT) !== false){
echo 'Integer ok';
}else{
echo 'Not an integer';
}
据我所知,表达式 filter_var($int, FILTER_VALIDATE_INT) 如果 $int 的内容未计算为整数或返回 $int 内的整数,则返回 false。
由于任何整数被 PHP 评估为真(当然除了 0),我想知道这样做时的具体区别:
if (filter_var($int, FILTER_VALIDATE_INT) !== false)
或者这个:
if (filter_var($int, FILTER_VALIDATE_INT) == true)
这 2 个表达式针对哪些值发送不同的结果?
我还有另一个问题:如果我的变量 $int 包含布尔值 true,那么无论如何结果似乎都是“整数 ok”。我们有义务隔离这个案例吗?因为每个人都在谈论“数字以0开头”的情况,而不是关于这个……
谢谢!
编辑:请不要建议我使用其他方法来验证整数,我不想使用其他方法。事实上,我想深入了解 PHP 是如何工作的。这就是为什么我想知道这种总是看到“!==false”而不是简单地看到“==true”的情况
【问题讨论】:
-
返回过滤后的数据,如果过滤失败则返回 FALSE。最好的办法是 .. (=== false) {} else {}
-
取决于您是否要先检查它是 FALSE 还是 TRUE。任君挑选。
-
只能使用
is_numeric。 php.net/manual/en/function.is-numeric.php -
很遗憾,你们都没有回答我...