[php]in_array函数性能问题

今天遇到一个奇怪的问题

foreach($a as $tmp) {

       if(in_array($tmp[‘test’], $b) {

              //TODO

}

}

 

$a,$b大概1W左右的int数组,结果比较非常慢

$b = array_flip($b);

foreach($a as $tmp) {

       if(isset ($b[$tmp[‘test’]]) {

              //TODO

}

}

通过isset来确定是否包含,明显快多了

isset是通过hash组织的,查询很快。而in_array是通过遍历。并且在一篇文章中提到:

http://www.server110.com/php/201309/1150.html

in_array这种松比较,会将两个字符型数字串先转换为长整型再进行比较,却不知性能就耗在这上面了。

所以在大数组比较时,非常不建议使用in_array方法。