dizi indeksi sıfırlamak için array_value vs array_merge

4 Cevap php

Ben re-index istiyorum 1 dizi var. I) 'in her ikisi de array_values and array_merge functions can do the job (and I don't need 2 arrays for the array_merge işlevi çalışmak için bulduk.

Hangi çok büyük bir dizi için daha hızlı? Ben kriter bu olur, ama nasıl bilmiyorum ve henüz büyük bir dizi yok.

Re-index önce:

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

Sonra re-index:

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

4 Cevap

Ben de kriterler yapmadım - ve emin olmak için gerekiyorsa, bunları yapmalıdır.

O dedi, ben bir diğer array_values ​​tercih ise () gitmek için yol olacak şüpheli olur.

Sonuçta, ne yapmak istiyorsun array_values ​​() için tasarlanmış tam olarak ne olduğunu.

array_values is meant to do exactly what you want it to do. array_merge is meant to do something else and you got a workaround to make it work on your case. (although you might have problems if a non-numerical value is forgotten in the indexes).

Ben önemli performans farklılıkları varsa biliyorum ama array_values ​​ile yazılmış emin kod okumak için kolay değil. Ve ben bir şeyler yapmak içindir bir işlev başka bir şey yapmak istemedim bir daha yavaş olduğunu düşünmüyorum.

Umarım bu yardımcı olur.

Bu dizide hiçbir dize anahtarlar varsa array_merge() sadece dizi anahtarları sıfırlamak dikkat etmek önemlidir.

Ben bench mark, array_value (açıklama bölümü biçimini korumak değil, benim kendi soruyu cevaplamak için üzgünüm) 3x hızlı olduğunu var

ve 8043 elemanları ile bir dizi

Dizi değerleri ,003291130065918 saniye sürdü.

Dizi birleştirme ,0096800327301025 saniye sürdü.

$ Shuf un-dizinlenmiş dizidir

Aşağıda kriter çalıştırmak için kod (web kapalı kopyaladı) olduğunu

    $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.";