2010-05-30 9 views
7

Tengo 1 matriz que quiero volver a indexar. Descubrí que las funciones array_values y array_merge pueden hacer el trabajo (y no necesito 2 arreglos para que la función array_merge funcione).array_merge vs array_value para restablecer el índice de matriz

¿Cuál es más rápido para una matriz muy grande? Lo compararía, pero no sé cómo y aún no tengo el gran conjunto.

Antes de re-index:

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

Después de volver a indexar:

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

me dieron el punto de referencia, array_value es 3 veces más rápido de y una matriz con 8043 elementos los valores de matriz tomaron 0.003291130065918 segundos. fusión de matriz tomó 0.0096800327301025 segundos. $ shuf es la matriz de la ONU indexada A continuación se muestra el código para ejecutar el punto de referencia (lo copió de la web) $ sha1_start = microtime (true); $ arraymerge = array_merge ($ shuf); $ shal_elapsed = microtime (verdadero) - $ sha1_start; $ start = microtime (verdadero); $ arrayvalue = array_values ​​($ shuf); $ elapsed = microtime (verdadero) - $ start; echo "
los valores de matriz tomaron $ transcurridos segundos."; echo "
combinación de matrices tomó $ shal_elapsed segundos."; – Jamex

Respuesta

2

Tampoco he hecho los puntos de referencia, y si necesita estar seguro, debe hacerlo.

Dicho esto, sospecho que si uno es preferible al otro, array_values ​​() va a ser el camino a seguir.

Después de todo, lo que quieres hacer es exactamente para lo que se diseñó array_values ​​().

2

array_values ​​tiene la intención de hacer exactamente lo que quiere que haga. array_merge está destinado a hacer algo más y tienes una solución para que funcione en tu caso. (aunque puede tener problemas si se olvida un valor no numérico en los índices).

No sé si hay diferencias de rendimiento significativas, pero es más fácil leer el código escrito con valores de matriz. Y no creo que una función destinada a hacer algo sea más lenta que una destinada a hacer otra cosa.

Espero que esto ayude.

1

Es importante tener en cuenta que array_merge() solo restablecerá las teclas de matriz si no hay claves de serie en la matriz.

3

me dieron el punto de referencia, array_value es 3 veces más rápido (lo siento para responder a mi propia pregunta, la sección de comentarios no conserva el formato)

para y matriz con 8043 elementos

valores de la matriz tomaron 0.003291130065918 segundo .

combinación de matrices tomó 0.0096800327301025 segundos.

$ shuf es la ONU indexada gama

A continuación se muestra el código para ejecutar el punto de referencia (copiado de la web)

$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

¡Gracias por esta aclaración! Tal vez podrías aceptar esta como respuesta aquí :) – xvilo

Cuestiones relacionadas