in_array函数强转缺陷
可以查看in_array函数介绍
in_array(mixed $needle, array $haystack, bool $strict = false): bool
语法为:in_array(需要搜索的值,搜索数组,是否匹配类型)
默认不加第三个参数时,会设置为false,即不匹配类型,在某些时候,例如字符串转为数值时会存在强转缺陷,因为字符串转为数字都为0,如果是以数字开头的,就会取值到字符串位置为止。
如下代码测试:

可以看到当lala值为1abcd时,inarray在进行匹配时会先将字符串转换为数字,即为1,结果返回为true。

修复:
第三个参数改为true,in_array在匹配时会匹配类型,类型不一致会返回false

仍然传入lala=1abced,可以看到已经返回false

浙公网安备 33010602011771号