PHP in_array优化

SJY发表于:2018年03月10日 12:14 • 阅读:

$array=array(1,2,3,4,5,6,7,8,9);
for($i = 0; $i < 1000000; $i ++) {        
        in_array(3, $array);
}

耗时1.98~2.0 惨不忍睹

用最笨的方法

for($i = 0; $i < 1000000; $i ++) {
        foreach ( $array as $v ) {
                if ($v == 3) {
                        $r = true;
                        break;
                }
        }
}

耗时0.38~0.42

再来看看其他的

for($i = 0; $i < 1000000; $i ++) {
        $r=array_key_exists(3,array_flip($array));
}

耗时4.4~4.6 不想看了,明显不可取

in_array可能有额外的功能,但是如果仅仅用来查找数组中的值是否等于某个字符串,我认为in_array是不可取的。

试试isset

for($i = 0; $i < 1000000; $i ++) {
        $array=array_flip($array);
        isset($array[3]);
}

耗时2.61~2.62使用自定义函数实现效率肯定没有原生函数高

function i_in_array($value, &$array) {
        foreach ( $array as $v ) {
                if ($v == $value) {
                        return true;
                }
        }
}

耗时2.39~2.42

总结:还是用foreach数组速度最快

欢迎转载,但请保留原文地址 http://www.sjyhome.com/php/1290.html

标签: PHP性能优化

回复(0)