Menu

PHP array_push(): adicionar elementos a um array

array_push($arr, $value) adiciona um ou mais valores ao fim de um array; $arr[] = $value faz o mesmo para um valor e é mais rápido. Veja como adicionar no fim, no início ou no meio de um array, adicionar uma chave e um valor e evitar o bug clássico do valor de retorno.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

array_push($arr, $value) adiciona um valor ao fim de um array. Para um único valor, o atalho $arr[] = $value; faz o mesmo trabalho sem chamar função e é o que a maior parte do código PHP usa. Os dois alteram o array no lugar.

array_push() recebe o array por referência, então modifica a variável que você passa. Ele retorna o novo número de elementos, que você pode ignorar.

array_push ou $arr[] =

Use $arr[] = $value para um valor: é mais curto e evita uma chamada de função, o que faz diferença dentro de um loop grande. Use array_push() quando tiver vários valores para adicionar numa instrução, ou uma lista de valores para espalhar.

$arr[] = também funciona numa variável que ainda não existe: o PHP cria o array. O array_push() precisa de um array existente: numa variável indefinida ele lança TypeError: array_push(): Argument #1 ($array) must be of type array, null given.

Adicionar uma chave e um valor

O array_push() só acrescenta valores com a próxima chave inteira. Para adicionar uma chave com nome, atribua a ela. Para adicionar vários pares de uma vez, use += (mantém as chaves existentes) ou array_merge() (deixa os novos valores vencerem).

A diferença entre + e array_merge() quando as chaves colidem está na página sobre array_merge.

Adicionar no início: array_unshift

array_unshift($arr, $value) insere no começo. As chaves inteiras são renumeradas para que o novo valor receba o índice 0; chaves string continuam como estão. Como o array_push(), ele aceita vários valores e retorna a nova contagem.

Para colocar um par com nome primeiro, monte um novo array: $menu = ['login' => '/login'] + $menu;.

Inserir numa posição específica

array_splice($arr, $offset, 0, $values) insere sem remover nada: começa em $offset, remove 0 elementos e coloca os novos valores ali. As chaves inteiras depois do ponto de inserção são renumeradas.

O array_splice() também pode remover e substituir elementos; a página sobre remover elementos mostra essas formas.

Acrescentar outro array

array_push($a, $b) adiciona $b como um único elemento aninhado, o que raramente é o que você quer. Para adicionar os valores de $b um por um, espalhe-os, ou monte um novo array com a sintaxe spread ou array_merge().

Erro comum: atribuir o valor de retorno

O array_push() retorna um número, a nova contagem de elementos. Atribuir isso de volta à variável do array substitui o seu array por um inteiro, e o próximo array_push() nele lança um TypeError.

O mesmo vale para array_unshift() e para sort(), que retorna true. Funções que alteram um array no lugar devolvem um status, não o array.

Perguntas frequentes

Qual a diferença entre array_push e $arr[] no PHP?

Os dois acrescentam no fim. $arr[] = $x; adiciona um valor sem chamar função, então é a escolha comum e um pouco mais rápida. array_push($arr, $a, $b, $c) é prático quando você adiciona vários valores de uma vez, e retorna a nova contagem de elementos.

Como adiciono uma chave e um valor a um array no PHP?

Atribua à chave: $arr['color'] = 'blue';. O array_push() não faz isso porque sempre usa a próxima chave inteira. Para adicionar vários pares de uma vez, use $arr += ['a' => 1, 'b' => 2]; ou array_merge().

Como adiciono um elemento no início de um array no PHP?

Use array_unshift($arr, $value). Ele renumera as chaves inteiras para que o novo valor receba o índice 0; chaves string continuam como estão.

Por que meu array vira um número depois do array_push?

Porque o array_push() retorna o novo número de elementos, não o array. Escrever $arr = array_push($arr, 'x'); substitui o array por esse número. Chame-o numa linha sozinho: array_push($arr, 'x');.

Ilustração das linguagens de programação do Coddy

Aprenda a programar com o Coddy

COMEÇAR