【问题标题】:array_merge vs array_value for resetting array indexarray_merge vs array_value 用于重置数组索引
【发布时间】:2011-02-25 19:28:30
【问题描述】:

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

【问题讨论】:

  • 我得到了基准,array_value 的速度提高了 3 倍,具有 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 "
    数组值花费了 $elapsed 秒。"; echo "
    数组合并耗时 $shal_elapsed 秒。";

标签: php arrays indexing array-merge


【解决方案1】:

我得到了基准,array_value 快了 3 倍(抱歉回答我自己的问题,评论部分不保留格式)

包含 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.";

【讨论】:

  • 感谢您的澄清!也许你可以在这里接受这个作为答案:)
【解决方案2】:

需要注意的是,array_merge() 只会在数组中没有字符串键的情况下重置数组键。

【讨论】:

    【解决方案3】:

    我也没有做过基准测试——如果你需要确定,你应该做。

    也就是说,我怀疑如果一个比另一个更可取,array_values() 将是要走的路。

    毕竟,你想做的正是 array_values() 的设计目的。

    【讨论】:

      【解决方案4】:

      array_values 旨在完全按照您的意愿去做。 array_merge 是为了做其他事情,你有一个解决方法让它适用于你的情况。 (尽管如果在索引中忘记了非数字值,您可能会遇到问题)。

      我不知道是否存在显着的性能差异,但可以肯定的是,使用 array_values 编写的代码更易于阅读。而且我不认为用于做某事的函数比用于做其他事情的函数慢。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2017-09-19
        • 1970-01-01
        • 2011-06-11
        • 2011-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多