¿Qué es mejor usar en PHP para agregar un miembro de matriz?
$array[] = $value;
o
array_push($array, $value);
?
Aunque el manual dice que es mejor evitar una llamada de función, también he leído que $array[]
es mucho más lento que array_push()
. ¿Cuáles son algunas aclaraciones o puntos de referencia?
php
arrays
performance
alex
fuente
fuente
Respuestas:
No hay puntos de referencia, pero personalmente siento que
$array[]
es más limpio de ver, y honestamente dividir los pelos en milisegundos es bastante irrelevante a menos que planee agregar cientos de miles de cadenas a su matriz.Editar : ejecuté este código:
El primer método que se utiliza
$array[]
es casi un 50% más rápido que el segundo.Algunos resultados de referencia:
Esto no debería sorprender, ya que el manual de PHP señala esto:
Por la forma en que está redactado, no me sorprendería que
array_push
sea más eficiente al agregar múltiples valores. EDITAR : Por curiosidad, hice algunas pruebas adicionales, e incluso para una gran cantidad de adiciones, las$array[]
llamadas individuales son más rápidas que una grandearray_push
. Interesante.fuente
$array[]
coincidir con la salida, verifiqué que es mucho más rápido, 300 ms frente a 2000 ms para asignaciones de 1 M en mi máquina. Sin embargo, agregar 20 elementos a la vez en array_push fue tan rápido como 20$array[] =
s.El uso principal de array_push () es que puede insertar varios valores al final de la matriz.
Dice en el documentación :
fuente
De los documentos de php para
array_push
:fuente
Se dice en la calle que [] es más rápido porque no hay gastos generales para la llamada a la función. Además, a nadie le gustan las funciones de matriz de PHP ...
"¿Es ... pajar, aguja ... o es pajar de agujas ... ah, a la mierda ... [] ="
fuente
Una diferencia es que puede llamar a array_push () con más de dos parámetros, es decir, puede enviar más de un elemento a la vez a una matriz.
huellas dactilares
1,2,3,4
fuente
Una simple declaración $ myarray [] será más rápida, ya que simplemente empuja un elemento a la pila de elementos debido a la falta de sobrecarga que traería una función.
fuente
Dado que " array_push " es una función y se llamó varias veces cuando está dentro del bucle, asignará una memoria a la pila. Pero cuando usamos $ matriz [] = $ valor, simplemente asignamos valor a la matriz.
fuente
La segunda es una llamada de función, por lo que generalmente debería ser más lenta que usar las funciones de acceso a la matriz principal. Pero creo que incluso una consulta de base de datos dentro de su script superará 1.000.000 llamadas a
array_push()
.fuente
Aunque la pregunta era más sobre el desempeño, la gente llegará a esta pregunta preguntándose si es una buena práctica usar
array_push
o$arr[]
.La función puede significar líneas menores para múltiples valores:
Sin embargo ,
array_push
...Me quedaré con
$arr[]
.fuente
Solo quiero agregar:
int array_push(...)
devolver el nuevo número de elementos en la matriz ( php doc ). que puede ser útil y más compacto que$myArray[] = ...; $total = count($myArray);
.También
array_push(...)
es significativo cuando la variable se usa como pila.fuente