array_merge vs array_value用于重置数组索引

时间:2010-05-30 23:33:02

标签: php arrays indexing array-merge

我有一个我想要重新索引的数组。我发现array_valuesarray_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
)

4 个答案:

答案 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()只会在数组中没有字符串键的情况下重置数组键。