Php 值0的筛选器\u验证\u INT返回错误
post的预期值为0或1,但当该值为零时返回错误Php 值0的筛选器\u验证\u INT返回错误,php,filter,Php,Filter,post的预期值为0或1,但当该值为零时返回错误 if(!($data['status'] = filter_input(INPUT_POST,'status',FILTER_VALIDATE_INT))) { echo'Error'; } else return true; 您的if语句将调用filter\u input()的结果隐式转换为布尔值,然后测试该结果。在您的例子中,结果是0,它被隐式转换为FALSE,因此测试失败 您需要使用身份比较显式地测试FALSE: $data['st
if(!($data['status'] = filter_input(INPUT_POST,'status',FILTER_VALIDATE_INT)))
{
echo'Error';
}
else
return true;
您的
if
语句将调用filter\u input()
的结果隐式转换为布尔值,然后测试该结果。在您的例子中,结果是0
,它被隐式转换为FALSE
,因此测试失败
您需要使用身份比较显式地测试FALSE
:
$data['status'] = filter_input(INPUT_POST,'status',FILTER_VALIDATE_INT);
if ($data['status'] === FALSE) ...
有关详细信息,请参阅。如果
语句正在将调用filter\u input()
的结果隐式转换为布尔值,然后测试该结果。在您的例子中,结果是0
,它被隐式转换为FALSE
,因此测试失败
您需要使用身份比较显式地测试FALSE
:
$data['status'] = filter_input(INPUT_POST,'status',FILTER_VALIDATE_INT);
if ($data['status'] === FALSE) ...
有关更多信息,请参阅。我认为它正在正确验证,并且根据过滤器输入的返回值,它正在返回0
因此,您将获得$data['status']=0
然后
!($data['status']=0)
将其设置为1
这就是它打印错误消息的原因我认为它正在正确验证,并且根据过滤器输入的返回值,它正在返回0
因此,您将获得$data['status']=0
然后
!($data['status']=0)
将其设置为1
这就是它打印错误消息的原因为什么此问题标记为and?上面的验证在插入MySQL数据库之前。为什么此问题标记为and?上面的验证在插入MySQL数据库之前。