Diferencia entre array push () y array array[] =


En el manual de PHP, (array_push) dice..

Si usas array_push () para agregar un elemento al array es mejor use array array [] = porque de esa manera no hay sobrecarga de llamar a un 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.

Author: Charity Leschinski, 2013-01-09

10 answers

Cuando llamas 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.

Usando $arr[] = 'some value'; no requiere una llamada a la función, e implementa la adición directamente en la estructura de datos. Por lo tanto, al agregar una gran cantidad de datos es mucho más rápido y eficiente en el uso de recursos $arr[].

 137
Author: BenM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-09 10:13:34

Puede agregar más de 1 elemento en una sola toma a array usando array_push,

Por ejemplo array_push($array_name, $element1, $element2,...)

Donde el element1, el element2,... son elementos que se agregarán a la matriz.

Pero si desea agregar solo un elemento a la vez, entonces se debe preferir otro método (es decir, usar arra array_name []).

 40
Author: Sujit Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-27 10:04:23

La diferencia está en la línea de abajo a "porque de esa manera no hay sobrecarga de llamar a una función."

array_push() generará una advertencia si el primer argumento no es matriz. Esto difiere del comportamiento $var[] donde un nuevo array es crear.

 12
Author: Baig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-23 14:26:57

Siempre debe usar $array[] si es posible porque, como indica el cuadro, no hay sobrecarga para la llamada a la función. Por lo tanto, es un poco más rápido que la llamada a la función.

 5
Author: Benjamin Paap,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-09 10:13:15

Array_push - Empuje uno o más elementos al final de la matriz

Tome nota de las palabras "uno o más elementos en el extremo " para hacer eso usando $arr[] tendría que obtener el tamaño máximo de la matriz

 5
Author: ianace,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-09 10:30:52

Explicar: 1.el primero declara la variable en array.

2.el segundo método array_push se usa para empujar la cadena en la variable array.

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 del array usando el método print_r.

Estos dos son iguales

 2
Author: Saravana Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-25 13:16:41

Nadie lo dijo, pero array_push solo empuja un elemento al FINAL DEL ARRAY, donde array array[index] puede insertar un valor en cualquier índice dado. Gran diferencia.

 1
Author: Marco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-11 19:39:02

En palabras normales..

// produces: array(0=>'foo', 1=>'bar');
$arr[] = 'foo'
$arr[] = 'bar'

//produces: array('foo', 'bar');
array_push($arr, 'foo', 'bar');
 0
Author: Chris Visser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-09 10:49:05

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 bucle a una matriz, es más rápido de usar:

     for($i = 0; $i < 10; $i++){
          array_push($arr, $i, $i*2, $i*3, $i*4, ...)
     }

En lugar de:

     for($i = 0; $i < 10; $i++){
         $arr[] = $i;
         $arr[] = $i*2;
         $arr[] = $i*3;
         $arr[] = $i*4;
         ...
     }

Editar-Olvidé cerrar el corchete para el for condicional

 0
Author: Antoniu Livadariu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-29 15:54:26

Ambos son iguales, pero array_push hace un bucle en su parámetro que es un array y realiza array array [] = element element

 0
Author: Sara,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-13 21:02:23