今天遇到一个奇怪的问题
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方法。