FILTER_VALIDATE_INT返回值0的错误

时间:2012-10-14 10:45:19

标签: php filter

帖子的预期值为0或1,但当值为零时,它返回错误

if(!($data['status'] = filter_input(INPUT_POST,'status',FILTER_VALIDATE_INT)))
{
  echo'Error';
}
else 
return true;

2 个答案:

答案 0 :(得分:5)

您的if语句隐式将调用结果转换为filter_input()为布尔值,然后测试该结果。在您的情况下,结果是0,它隐式转换为FALSE,因此测试失败。

您需要使用针对FALSE的身份比较进行明确测试:

$data['status'] = filter_input(INPUT_POST,'status',FILTER_VALIDATE_INT);
if ($data['status'] === FALSE) ...

有关详细信息,请参阅PHP type comparison tables

答案 1 :(得分:1)

我认为它正确验证并且按照filter_input it is returning 0

的返回值进行验证

所以你会得到$data['status'] = 0

然后

!($data['status'] = 0)使其成为1,这就是打印错误消息的原因