PHP array_filter函数优化

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

function myfunction($v) {
        if ($v === "Horse") {
                return true;
        }
        return false;
}
$arr = array (
                0 => "Dog",
                1 => "Cat",
                2 => "Horse" 
);
for($i = 0; $i < 1000000; $i ++) {
        array_filter ( $arr, 'myfunction' );
}

耗时8.23~8.43

$arr = array (
                0 => "Dog",
                1 => "Cat",
                2 => "Horse" 
);
for($i = 0; $i < 1000000; $i ++) {
        $arr2=array();
        foreach($arr as $v){
                if ($v==="Horse"){
                        $arr2[]=$v;
                }
        }
}

耗时0.56~0.58

由此可见,很多php自带的函数,还不如用最笨的方法来实现,效率要高的多。但是原生函数使用起来更简便,如果自己去定义同一功能的函数,让用户使用起来方便,效率肯定没有原生函数高。

$arr = array (
                0 => "Dog",
                1 => "Cat",
                2 => "Horse" 
);
function i_array_filter($array, $callback) {
        $new_arr=array();
        foreach ( $array as $v ) {
                if($callback ( $v )){
                        $new_arr[]=$v;
                }
        }
        return $new_arr;
}
function myfunction($var) {
        if ($var === "Cat") {
                return true;
        }
}
for($i = 0; $i < 1000000; $i ++) {
         i_array_filter ( $arr, 'myfunction' );
}

耗时9.04~9.23

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

标签: PHP性能优化

回复(0)