Funções de Array em PHP: Um Guia Completo
Arrays em PHP são uma estrutura de dados fundamental. Aprenda a criar, percorrer e manipular arrays com as funções mais usadas do PHP.
Um array em PHP é uma única variável que armazena uma coleção de valores. Em vez de declarar $user1, $user2, $user3, você os armazena todos em um único array e os acessa por um índice (um número) ou uma chave (um nome). Arrays são um dos blocos de construção mais utilizados em PHP — dados de requisição ($_POST, $_GET), linhas de banco de dados e configurações são todos fornecidos como arrays.
Este capítulo explica os três tipos de array em PHP, como criá-los e lê-los, como percorrê-los em loop e as funções embutidas que você usará com mais frequência.
Três tipos de array
PHP tem um único tipo de array internamente, mas você o verá usado de três formas distintas:
| Tipo | Chaves | Uso típico |
|---|---|---|
| Indexado | Inteiros automáticos 0, 1, 2… | Uma lista ordenada de itens |
| Associativo | Strings que você escolhe | Um registro com campos nomeados |
| Multidimensional | Arrays aninhados dentro de arrays | Tabelas, dados agrupados |
Criando arrays
A sintaxe moderna com colchetes [] é preferida; a forma mais antiga com array() é equivalente e ainda funciona.
<?php
// Indexed array — keys 0, 1, 2 are assigned automatically
$fruits = ["apple", "banana", "cherry"];
// Associative array — you choose the keys
$user = [
"name" => "Ada",
"email" => "[email protected]",
"admin" => true,
];
echo $fruits[0]; // apple
echo $user["name"]; // AdaAdicione ao array com a sintaxe de colchetes vazios, que anexa ao final:
<?php
$fruits = ["apple", "banana"];
$fruits[] = "cherry"; // index 2
$fruits[] = "date"; // index 3
print_r($fruits);
// Array ( [0] => apple [1] => banana [2] => cherry [3] => date )Use
arrays indexados,arrays associativosearrays multidimensionaispara uma cobertura mais aprofundada de cada tipo.
Percorrendo um array em loop
O loop foreach é a forma idiomática de percorrer um array, pois fornece diretamente a chave e o valor sem controle manual de índice:
<?php
$user = ["name" => "Ada", "email" => "[email protected]"];
foreach ($user as $key => $value) {
echo "$key: $value\n";
}
// name: Ada
// email: [email protected]Consulte o capítulo sobre o loop foreach para conhecer a sintaxe completa, incluindo iteração por referência.
Como funcionam as funções de array
O PHP oferece centenas de funções de array — helpers predefinidos que executam uma operação específica para que você não precise escrever o loop manualmente. Um ponto importante: a maioria delas retorna um novo array e não altera o original (array_map, array_filter, array_merge…), enquanto um grupo menor modifica o array no lugar e retorna outra coisa (sort retorna true, array_push retorna o novo comprimento). Saber a diferença evita uma classe comum de bugs.
Você chama uma função passando o array como argumento. Por exemplo, array_sum soma todos os valores:
Funções que você mais usará
| Função | O que faz | Modifica? |
|---|---|---|
count() | Número de elementos | não |
in_array() | Um valor está presente? | não |
array_keys() | Todas as chaves como array | não |
array_values() | Todos os valores, reindexados a partir de 0 | não |
array_merge() | Unir dois ou mais arrays | não |
array_slice() | Extrair uma parte | não |
array_unique() | Remover valores duplicados | não |
array_push() | Anexar um ou mais valores | sim |
sort() | Ordenar valores em ordem crescente | sim |
A seguir estão as três funções de callback fundamentais — map, filter e reduce — que cobrem a maioria das tarefas de transformação de dados.
array_map — transformar cada elemento
array_map executa um callback em cada valor e retorna um novo array com os resultados, com o mesmo comprimento do original:
<?php
$numbers = [1, 2, 3, 4];
$squared = array_map(fn($n) => $n * $n, $numbers);
print_r($squared);
// Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 )array_filter — manter apenas o que corresponde
array_filter mantém os elementos para os quais o callback retorna true. Observe que ele preserva as chaves originais, então frequentemente é seguido de array_values() para reindexar:
<?php
$numbers = [1, 2, 3, 4, 5, 6];
$even = array_filter($numbers, fn($n) => $n % 2 === 0);
print_r($even);
// Array ( [1] => 2 [3] => 4 [5] => 6 ) ← keys kept
print_r(array_values($even));
// Array ( [0] => 2 [1] => 4 [2] => 6 ) ← re-indexedarray_reduce — reduzir a um único valor
array_reduce aplica um callback que carrega um acumulador ($carry) por todo o array, reduzindo-o a um único resultado — uma soma, uma string, um máximo, qualquer coisa:
Consulte array_map, array_filter e array_reduce para detalhes completos, e funções de callback PHP para entender como os callbacks funcionam.
Armadilhas comuns
array_filterpreserva as chaves. Como mostrado acima, o resultado não é mais0, 1, 2…. Envolva-o comarray_values()quando precisar de uma lista limpa.array_mergerenumera chaves inteiras, mas sobrescreve chaves string.array_merge(["a" => 1], ["a" => 2])resulta em["a" => 2], enquanto dois arrays indexados são concatenados, não sobrescritos.- Modificar vs. retornar.
sort($arr)altera$arre retornatrue— escrever$arr = sort($arr)é um bug clássico que define$arrcomotrue. - Acessar uma chave inexistente emite um aviso e retorna
null. Proteja-se comisset()ouarray_key_exists()antes.
Conclusão
Arrays em PHP existem em três formas — indexado, associativo e multidimensional — e uma grande biblioteca de funções existe para consultá-los, transformá-los e combiná-los. Use foreach para iterar, array_map / array_filter / array_reduce para remodelar dados, e tenha em mente a distinção entre modificar e retornar para evitar surpresas. A partir daqui, explore ordenação de arrays e funções PHP para completar seu conjunto de ferramentas.