我有一个我想要重新索引的数组。我发现array_values
和array_merge
函数都可以完成这项工作(我不需要2个数组来使array_merge
函数工作)。
对于非常大的阵列来说哪个更快?我会对此进行基准测试,但我不知道怎么也没有大阵列。
在重新索引之前:
Array
(
[0] => AB
[4] => EA
[6] => FA
[9] => DA
[10] => AF
)
重新索引后:
Array
(
[0] => AB
[1] => EA
[2] => FA
[3] => DA
[4] => AF
)
答案 0 :(得分:3)
我得到了替补标记,array_value快了3倍(很抱歉回答我自己的问题,评论部分没有保留格式)
for和包含8043元素的数组
数组值耗时0.003291130065918秒。
阵列合并花了0.0096800327301025秒。
$ shuf是未编入索引的数组
以下是运行基准测试的代码(从网上复制)
$sha1_start = microtime(true);
$arraymerge = array_merge ($shuf);
$shal_elapsed = microtime(true) - $sha1_start;
$start = microtime(true);
$arrayvalue = array_values ($shuf);
$elapsed = microtime(true) - $start;
echo "<br>array values took $elapsed seconds.";
echo "<br>array merge took $shal_elapsed seconds.";
答案 1 :(得分:2)
array_values意味着完全按照您的意愿执行操作。 array_merge意味着做其他事情,你有一个解决方法,使它适用于你的情况。 (尽管如果索引中忘记了非数值,您可能会遇到问题。)
我不知道是否存在显着的性能差异,但确保使用array_values编写的代码更容易阅读。而且我不认为用于做某事的功能比用于做某事的功能慢。
希望这有帮助。
答案 2 :(得分:2)
我也没有完成基准测试 - 如果你需要确定,你应该这样做。
那就是说,我怀疑如果一个人比另一个人更好,那么array_values()将是最佳选择。
毕竟,你想要做的就是为array_values()设计的。
答案 3 :(得分:1)
重要的是要注意array_merge()
只会在数组中没有字符串键的情况下重置数组键。