En el manual de PHP, ( array_push ) dice ..
Si usa array_push () para agregar un elemento a la matriz, es mejor usar $ array [] = porque de esa manera no hay sobrecarga de llamar a una función.
Por ejemplo :
$arr = array();
array_push($arr, "stackoverflow");
print_r($arr);
vs
$arr[] = "stackoverflow";
print_r($arr);
No entiendo por qué hay una gran diferencia.
Respuestas:
Cuando llama a una función en PHP (como
array_push()
), hay gastos generales en la llamada, ya que PHP tiene que buscar la referencia de la función, encontrar su posición en la memoria y ejecutar cualquier código que defina.El uso
$arr[] = 'some value';
no requiere una llamada a función e implementa la adición directamente en la estructura de datos. Por lo tanto, al agregar una gran cantidad de datos, su uso es mucho más rápido y eficiente en cuanto a recursos$arr[]
.fuente
$arr[] = value
sea más rápido? Tratando de imaginar por qué el compilador trataría el código de manera diferente.Puede agregar más de 1 elemento de una sola vez a la matriz usando array_push,
p.ej
array_push($array_name, $element1, $element2,...)
Donde $ element1, $ element2, ... son elementos que se agregarán a la matriz.
Pero si desea agregar solo un elemento a la vez, entonces debe preferirse otro método (es decir, usar $ array_name []).
fuente
La diferencia está en la línea de abajo a "porque de esa manera no hay gastos generales de llamar a una función".
fuente
Siempre debe usarlo
$array[]
si es posible porque, como indica el cuadro, no hay gastos generales para la llamada a la función. Por tanto, es un poco más rápido que la llamada a la función.fuente
array_push : empuja uno o más elementos al final de la matriz
Tome nota de las palabras " uno o más elementos al final " para hacer eso, usando
$arr[]
tendría que obtener el tamaño máximo de la matrizfuente
$arr[...index...] = $value;
con lo que se está discutiendo aquí, que es$arr[] = $value;
. No es necesario saber el tamaño o la matriz para presionar hasta el final. Múltiples elementos serían simplemente múltiples llamadas:$arr[] = $value1; $arr[] = $value2; $arr[] = $value3;
explique: 1. el primero declara la variable en la matriz.
2.El segundo método array_push se utiliza para insertar la cadena en la variable de matriz.
3. finalmente imprimirá el resultado.
4.El segundo método es almacenar directamente la cadena en la matriz.
5.Los datos se imprimen en los valores de la matriz usando el método print_r.
estos dos son iguales
fuente
ambos son iguales, pero array_push crea un bucle en su parámetro que es una matriz y realiza $ matriz [] = $ elemento
fuente
Sé que esta es una respuesta antigua, pero podría ser útil para otros saber que otra diferencia entre los dos es que si tiene que agregar más de 2/3 valores por ciclo a una matriz, es más rápido de usar:
en vez de:
editar- Olvidé cerrar el corchete para el
for
condicionalfuente
for(...){ $arr = $arr + [$i, $i*2, $i*3, $i*4, ...] }
. Supongo que array_push sigue siendo un poco más rápido que eso.Nadie dijo, pero array_push solo empuja un elemento al FINAL DEL ARRAY, donde $ array [index] puede insertar un valor en cualquier índice dado. Gran diferencia.
fuente
$array[index] =
, que es una operación diferente a$array[] = ...
. La pregunta da dos piezas de código y pregunta por qué habría una diferencia significativa de [rendimiento] entre ellas. La pregunta significa literalmente$array[] = ...
, que es un idioma específico de php, que no implica un índice. array + index resuelve un problema diferente, produce un código diferente y es una compensación diferente.