哪个是更快的array_merge或array_splice来合并数组?

时间:2017-02-20 14:26:18

标签: php

哪个是更快的array_merge或array_splice来合并数组? (使用array_splice替换没有第二个具有合并效果的数组)

array_splice看起来可能使用较少的数组复制,因此它可能更快。有没有关于这一点的研究?

e.g。

array_splice($a1, count($a1), 0, $a2);
$a1 = array_merge($a1, $a2); 

2 个答案:

答案 0 :(得分:2)

array_merge必须检查输入数组是否具有数字键或命名键,因此它知道是要追加还是合并。 array_splice并不需要进行此项检查。

答案 1 :(得分:1)

$arguments = ["arg1" => "111", "arg2" => "222", "arg3" => "333"];

使用array_splice = 3.273508(以秒为单位)

for ($i=0; $i < 1000000; $i++) { 
   $arguments = ["arg1" => "111", "arg2" => "222", "arg3" => "333"];
   array_splice($arguments, 0, 0,[777]);
   $arguments = [];
}

注意* array_splice($arguments, count($arguments), 0,[777]);array_splice($arguments, 0, 0,[777]);相同的时间=〜3.273508(以秒为单位)

输出

Array
(
    [0] => 777
    [arg1] => 111
    [arg2] => 222
    [arg3] => 333
)

使用array_merge = 2.984012(以秒为单位)

for ($i=0; $i < 1000000; $i++) { 

    $arguments = ["arg1" => "111", "arg2" => "222", "arg3" => "333"];
    $args = array_merge([777], $arguments);
    $arguments = [];
}

输出

Array
(
    [0] => 777
    [arg1] => 111
    [arg2] => 222
    [arg3] => 333
)