W3docs

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:

TipoChavesUso típico
IndexadoInteiros automáticos 0, 1, 2…Uma lista ordenada de itens
AssociativoStrings que você escolheUm registro com campos nomeados
MultidimensionalArrays aninhados dentro de arraysTabelas, 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"];   // Ada

Adicione 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 associativos e arrays multidimensionais para 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:

php— editable, runs on the server

Funções que você mais usará

FunçãoO que fazModifica?
count()Número de elementosnão
in_array()Um valor está presente?não
array_keys()Todas as chaves como arraynão
array_values()Todos os valores, reindexados a partir de 0não
array_merge()Unir dois ou mais arraysnão
array_slice()Extrair uma partenão
array_unique()Remover valores duplicadosnão
array_push()Anexar um ou mais valoressim
sort()Ordenar valores em ordem crescentesim

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-indexed

array_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:

php— editable, runs on the server

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_filter preserva as chaves. Como mostrado acima, o resultado não é mais 0, 1, 2…. Envolva-o com array_values() quando precisar de uma lista limpa.
  • array_merge renumera 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 $arr e retorna true — escrever $arr = sort($arr) é um bug clássico que define $arr como true.
  • Acessar uma chave inexistente emite um aviso e retorna null. Proteja-se com isset() ou array_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.

Prática

Prática
Quais afirmações são verdadeiras sobre Arrays em PHP?
Quais afirmações são verdadeiras sobre Arrays em PHP?
Was this page helpful?