Menu

PHP array_push(): agregar elementos a un array

array_push($arr, $value) añade uno o varios valores al final de un array; $arr[] = $value hace lo mismo con un solo valor y es más rápido. Aprende a añadir al final, al principio o en medio de un array, añadir una clave con su valor y evitar el bug clásico del valor de retorno.

Esta página incluye editores ejecutables: edita, ejecuta y ve el resultado al instante.

array_push($arr, $value) añade un valor al final de un array. Para un solo valor, el atajo $arr[] = $value; hace lo mismo sin llamar a una función y es lo que usa la mayoría del código PHP. Los dos cambian el array en el sitio.

array_push() recibe el array por referencia, así que modifica la variable que le pasas. Devuelve el nuevo número de elementos, que puedes ignorar.

array_push vs $arr[] =

Usa $arr[] = $value para un valor: es más corto y evita una llamada a función, algo que se nota dentro de un bucle grande. Usa array_push() cuando tengas varios valores que añadir en una sentencia, o una lista de valores que desplegar.

$arr[] = también funciona con una variable que aún no existe: PHP crea el array. array_push() necesita un array existente: con una variable no definida lanza TypeError: array_push(): Argument #1 ($array) must be of type array, null given.

Añadir una clave y un valor

array_push() solo añade valores con la siguiente clave entera. Para añadir una clave con nombre, asígnale el valor. Para añadir varios pares a la vez, usa += (conserva las claves existentes) o array_merge() (hace que ganen los valores nuevos).

La diferencia entre + y array_merge() cuando las claves coinciden se explica en la página de array_merge.

Añadir al principio: array_unshift

array_unshift($arr, $value) inserta al principio. Las claves enteras se renumeran para que el nuevo valor tenga el índice 0; las claves de texto se quedan como están. Igual que array_push(), acepta varios valores y devuelve el nuevo total.

Para poner primero un par con nombre, construye un array nuevo: $menu = ['login' => '/login'] + $menu;.

Insertar en una posición concreta

array_splice($arr, $offset, 0, $values) inserta sin eliminar nada: empieza en $offset, elimina 0 elementos y coloca ahí los valores nuevos. Las claves enteras posteriores al punto de inserción se renumeran.

array_splice() también puede eliminar y sustituir elementos; la página sobre eliminar elementos muestra esas formas.

Añadir otro array

array_push($a, $b) añade $b como un único elemento anidado, que rara vez es lo que quieres. Para añadir los valores de $b uno a uno, despliégalos, o construye un array nuevo con la sintaxis spread o array_merge().

Error frecuente: asignar el valor de retorno

array_push() devuelve un número, el nuevo total de elementos. Volver a asignarlo a la variable del array sustituye tu array por un entero, y el siguiente array_push() sobre ella lanza un TypeError.

Lo mismo vale para array_unshift() y para sort(), que devuelve true. Las funciones que cambian un array en el sitio devuelven un estado, no el array.

Preguntas frecuentes

¿Cuál es la diferencia entre array_push y $arr[] en PHP?

Los dos añaden al final. $arr[] = $x; añade un valor sin llamar a una función, así que es la opción habitual y algo más rápida. array_push($arr, $a, $b, $c) es práctico cuando añades varios valores a la vez, y devuelve el nuevo número de elementos.

¿Cómo añado una clave y un valor a un array en PHP?

Asigna a la clave: $arr['color'] = 'blue';. array_push() no puede hacerlo porque siempre usa la siguiente clave entera. Para añadir varios pares a la vez, usa $arr += ['a' => 1, 'b' => 2]; o array_merge().

¿Cómo añado un elemento al principio de un array en PHP?

Usa array_unshift($arr, $value). Renumera las claves enteras para que el nuevo valor tenga el índice 0; las claves de texto se quedan como están.

¿Por qué mi array se convierte en un número después de array_push?

Porque array_push() devuelve el nuevo número de elementos, no el array. Escribir $arr = array_push($arr, 'x'); sustituye el array por ese número. Llámala en su propia línea: array_push($arr, 'x');.

Ilustración de los lenguajes de programación de Coddy

Aprende a programar con Coddy

COMENZAR