Menu

Arrays em PHP: criar, acessar, percorrer e imprimir

Um array PHP é uma lista ordenada de valores, cada um guardado sob uma chave: $fruits = ['apple', 'banana']; é lido como $fruits[0]. Veja como criar arrays, ler e alterar elementos, percorrê-los, imprimi-los e qual função de array usar.

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

Um array PHP guarda uma lista de valores sob chaves. Crie um com colchetes, $fruits = ['apple', 'banana', 'cherry'];, e leia um elemento pelo índice, $fruits[0]. Os índices começam em 0, e count($fruits) dá o número de elementos.

Todo array PHP é um mapa ordenado: cada valor fica sob uma chave. Quando você não escolhe as chaves, o PHP as numera 0, 1, 2... e você tem um array indexado. Quando você mesmo as escolhe (['name' => 'Ada']), tem um array associativo. Os dois são o mesmo tipo array.

Criar um array

Colchetes são a sintaxe comum. array() é a grafia antiga e produz exatamente a mesma coisa. range() monta uma lista de números ou letras, e array_fill() repete um valor.

Um array PHP pode guardar valores de tipos diferentes ao mesmo tempo, incluindo outros arrays. Um array de arrays é um array multidimensional, o jeito comum de guardar linhas de dados.

Pegar o primeiro e o último elemento

O PHP não tem índices negativos. $arr[-1] não significa "o último": ele procura uma chave chamada -1 e, quando não há, o PHP imprime Warning: Undefined array key -1. Use array_key_first() e array_key_last(), que também funcionam quando as chaves não começam em 0.

end($queue) também retorna o último valor, mas move o ponteiro interno do array como efeito colateral, então a versão baseada na chave é a escolha mais clara.

Imprimir um array

echo $arr não funciona: imprime a palavra Array e um aviso. Escolha a saída que serve para o caso:

  • print_r($arr) para uma saída legível durante a depuração.
  • var_dump($arr) para ver também o tipo e o tamanho de cada valor.
  • implode(', ', $arr) para transformar os valores numa string para exibir.
  • json_encode($arr) para enviar o array ao JavaScript ou a uma API.

A página sobre print_r e var_dump explica as opções de formatação, incluindo como imprimir um array dentro do HTML.

Percorrer um array

O foreach é o loop feito para arrays: ele entrega cada valor, e também a chave se você pedir. Um laço for com índice também funciona para arrays indexados cujas chaves vão de 0 sem buracos.

Arrays são copiados, não compartilhados

Atribuir um array a outra variável, ou passá-lo para uma função, gera uma cópia. Alterar a cópia não mexe no original. Adicione & ao parâmetro quando uma função deve alterar o array de quem chamou.

Funções de array por tarefa

O PHP traz mais de 70 funções de array. Estas são as que você mais vai usar, cada uma com sua página:

TarefaFunção
Adicionar no fimarray_push() ou $arr[] =
Número de elementoscount()
Verificar se um valor existein_array()
Encontrar a chave de um valorarray_search()
Verificar se uma chave existearray_key_exists()
Juntar arraysarray_merge()
Transformar cada valorarray_map()
Manter alguns valoresarray_filter()
Ordenarsort(), usort() e companhia
Remover um elementounset(), array_splice()
Pegar uma partearray_slice()
Remover duplicadosarray_unique()
String para array e de voltaexplode(), implode()

Chaves que se fundem em silêncio

Chaves de array são inteiros ou strings, e o PHP converte algumas chaves para você. Uma string que parece um número decimal inteiro, como "1", vira o inteiro 1, então $a["1"] e $a[1] são a mesma posição. "01" e "1.5" continuam strings. É por isso que um array montado a partir de dados de formulário ou de um CSV pode acabar com menos elementos do que você esperava.

Perguntas frequentes

Como crio um array em PHP?

Use colchetes: $colors = ['red', 'green', 'blue'];. Um array vazio é $items = [];. A sintaxe antiga array('red', 'green') faz a mesma coisa e continua funcionando.

Como imprimo um array em PHP?

O echo não imprime um array (ele imprime a palavra Array e um aviso). Use print_r($arr) para uma saída legível, var_dump($arr) para ver também os tipos, ou echo implode(', ', $arr) para imprimir os valores numa linha.

Como pego o último elemento de um array em PHP?

Use $arr[array_key_last($arr)] (PHP 7.3+) ou end($arr). O PHP não tem índices negativos: $arr[-1] procura uma chave chamada -1, que normalmente não existe.

Arrays PHP são passados por valor ou por referência?

Por valor. $b = $a; dá a $b uma cópia própria, então alterar $b não altera $a. Para modificar o array de quem chamou dentro de uma função, declare o parâmetro como referência: function add(array &$list).

Qual a diferença entre array indexado e associativo no PHP?

São o mesmo tipo. Um array indexado tem chaves inteiras 0, 1, 2... que o PHP atribui para você; um array associativo usa chaves que você escolhe, normalmente strings como 'name'. Um mesmo array pode até misturar os dois.

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

Aprenda a programar com o Coddy

COMEÇAR