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:
| Tarefa | Função |
|---|---|
| Adicionar no fim | array_push() ou $arr[] = |
| Número de elementos | count() |
| Verificar se um valor existe | in_array() |
| Encontrar a chave de um valor | array_search() |
| Verificar se uma chave existe | array_key_exists() |
| Juntar arrays | array_merge() |
| Transformar cada valor | array_map() |
| Manter alguns valores | array_filter() |
| Ordenar | sort(), usort() e companhia |
| Remover um elemento | unset(), array_splice() |
| Pegar uma parte | array_slice() |
| Remover duplicados | array_unique() |
| String para array e de volta | explode(), 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.