php中in_array函数的坑

Posted dishiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中in_array函数的坑相关的知识,希望对你有一定的参考价值。

由于php是弱类型语言,所以有自动类型转换

例子

 1 $array = [0, 1, 2, ‘3‘];
 2 
 3 var_dump(in_array(‘abc‘, $array)); //true
 4 var_dump(in_array(‘1ac‘, $array)); //true
 5 // 以上自动转换 abc -> 0, 1ac -> 1
 6 // 所以判断都是true
 7 
 8 // 类似的还有
 9 
10 $a = null;
11 $b = false;
12 echo $a == $b; //true
13 
14 $c = "";
15 $d = 0;
16 echo $c == $d; //true
17 
18 // 所有由此,有些重要的地方要使用 === 全等于来判断(类型和值都相等)

所以使用的时候一定要注意对值的判断是否正确,

如果确认函数的返回值一定是bool 那么尽量使用 === 全等于

以上是关于php中in_array函数的坑的主要内容,如果未能解决你的问题,请参考以下文章

遭遇php的in_array低性能问题

PHP代码审计Day1 - in_array函数缺陷

转 PHP in_array() 函数

php in_array函数的使用

代码审计—红日安全day1,in_array()和make_set函数

In_array()函数弱比较