2010-05-30 121 views
7

我有1個數組,我想重新索引。我發現array_valuesarray_merge函數都可以完成這項工作(並且我不需要使用array_merge函數來運行2個數組)。array_merge vs array_value重置數組索引

對於非常大的數組,哪個更快?我會以此爲基準,但我不知道如何以及沒有大型陣列。

重新索引之前:

Array 
(
    [0] => AB 
    [4] => EA 
    [6] => FA 
    [9] => DA 
    [10] => AF 
) 

重新索引後:

Array 
(
    [0] => AB 
    [1] => EA 
    [2] => FA 
    [3] => DA 
    [4] => AF 
) 
+0

我得到了替補席上標誌,array_value是3倍速度更快 爲並用8043個元素排列 數組值爲0.003291130065918秒。 陣列合併花費了0.0096800327301025秒。 $ SHUF是沒有索引陣列 以下是運行基準測試的代碼(複製它離線) $ sha1_start = microtime中(真); $ arraymerge = array_merge($ shuf); $ shal_elapsed = microtime(true) - $ sha1_start; $ start = microtime(true); $ arrayvalue = array_values($ shuf); $ elapsed = microtime(true) - $ start; echo「
數組值經過了$流逝的秒數。」; echo「
數組合並花費了$ shal_elapsed秒。」; – Jamex 2010-05-31 00:59:11

回答

2

我還沒有做過基準 - 如果你需要確定,你應該做。

這就是說,我會懷疑,如果一個人比另一個更可取,那麼array_values()就是要走的路。

畢竟,你想要做的正是array_values()的設計目的。

2

array_values是爲了做的正是你想要它做什麼。 array_merge是爲了做其他事情,你有一個解決方法,使它適用於你的情況。 (儘管如果索引中忘記了非數字值,您可能會遇到問題)。

我不知道是否有顯着的性能差異,但肯定用array_values編寫的代碼更容易閱讀。我不認爲一個用來做某事的函數比一個用來做其他事情的函數要慢。

希望這會有所幫助。

1

重要的是要注意,如果數組中沒有字符串鍵,array_merge()將只會重置數組鍵。

3

我得到了板凳標記,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."; 
+0

感謝您的澄清!也許你可以接受這個答案:) – xvilo 2018-01-12 10:33:25