我想指出的是,虽然其他注释指出展开运算符应该比 array_merge 快,但我实际上发现对于普通数组来说情况恰恰相反。在 PHP 7.4 和 PHP 8.0 中都是如此。对于大多数应用程序来说,这种差异应该可以忽略不计,但为了准确起见,我想指出这一点。
下面是用于测试的代码,以及结果
<?php
$before = microtime(true);
for ($i=0 ; $i<10000000 ; $i++) {
$array1 = ['apple','orange','banana'];
$array2 = ['carrot','lettuce','broccoli'];
$array1 = [...$array1,...$array2];
}
$after = microtime(true);
echo ($after-$before) . " 秒 (展开运算符)\n";
$before = microtime(true);
for ($i=0 ; $i<10000000 ; $i++) {
$array1 = ['apple','orange','banana'];
$array2 = ['carrot','lettuce','broccoli'];
$array1 = array_merge($array1,$array2);
}
$after = microtime(true);
echo ($after-$before) . " 秒 (array_merge)\n";
?>
PHP 7.4
展开运算符耗时 1.2135608196259 秒
array_merge 耗时 1.1402177810669 秒
PHP 8.0
展开运算符耗时 1.1952061653137 秒
array_merge 耗时 1.099925994873 秒