PHP的in_array bevahior让我感到惊讶

Ben*_*Ben 2 php

在控制器中验证动态保存方法时,我想确保给定的情况只接受0和1作为有效值.当我尝试操作输入表单时,将'aaa'作为值提交,以下内容仍然返回true.这是为什么?

var_dump(in_array('aaa', [0, 1])); // true, I was expecting it to return false
Run Code Online (Sandbox Code Playgroud)

ADy*_*son 8

您需要使用"严格"设置,以强制该函数检查元素的类型:

var_dump(in_array('aaa', [0, 1], true));
Run Code Online (Sandbox Code Playgroud)

http://php.net/manual/en/function.in-array.php说明

如果第三个参数strict设置为TRUE,那么in_array()函数也将检查haystack中针的类型.

它返回true的原因是因为字符串是真的,同样如此1.

if( "aaa" ){ echo "you will see me"; }
Run Code Online (Sandbox Code Playgroud)