FILTER_VALIDATE_INT返回值0的错误

Avi*_*ese 0 php filter

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

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

egg*_*yal 5

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

您需要使用身份比较显式测试FALSE:

$data['status'] = filter_input(INPUT_POST,'status',FILTER_VALIDATE_INT);
if ($data['status'] === FALSE) ...
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅PHP类型比较表.