点击这里查看专题页

最近项目中遇到了针对上万条数据(多维数组处理)分析的情况,最终发现array_merge()函数耗费了大量的时间。

foreach ($items as $item) {
        $checked = $item->checked;
        if (!empty($checked)) {
            $final = array_merge($final, $checked);
        }
}

最终我结合实际情况用基础方法来解决了array_merge()函数耗时的问题。性能得到了极大的提升。

foreach ($items as $item) {
        $checked = $item ->checked;
        if (!empty($checked)) {
            imitateMerge($final, $checked);
        }
}

imitateMerge()为自定义的函数,如下:

function imitateMerge(&$array1, &$array2) {
        foreach($array2 as $a2) {
            $array1[] = $a2;
        }
}
    

需要补充说明的是,array_merge()的参数前后顺序不一样,对速度的影响也是极大的。

总结:

尤其要合并的数组数量多,结构复杂时array_merge()的资源使用量会曲线增长。当然本文中的自定义函数imitateMerge()也不是能完全代替array_merge()函数的。要结合实际情况做出调整。