W3docs

Entendendo Arrays em PHP

Arrays PHP são estruturas de dados para armazenar coleções de variáveis, essenciais para gerenciar grandes quantidades de dados em PHP.

Um array PHP é um mapa ordenado: uma única variável que armazena muitos valores, cada um acessível por uma chave. Em vez de declarar $fruit1, $fruit2, $fruit3, você mantém um único array $fruits e acessa seus itens por posição ou por nome. Arrays são a estrutura de dados mais utilizada em PHP — resultados de consultas, entrada de formulários ($_POST), configurações e JSON chegam todos como arrays.

Este capítulo aborda os três tipos de arrays, como criá-los e lê-los, como adicionar, remover e mesclar elementos, como percorrê-los em loop e as armadilhas comuns que costumam pegar as pessoas de surpresa. Cada exemplo executável imprime seu resultado para que você veja exatamente o que o PHP produz.

Tipos de Arrays PHP

PHP tem três formas de array e, por baixo dos panos, todas são o mesmo tipo — um mapa ordenado de pares chave/valor:

  • Arrays indexados usam chaves inteiras automáticas começando em 0.
  • Arrays associativos usam chaves string que você escolhe.
  • Arrays multidimensionais armazenam outros arrays como valores, permitindo construir tabelas e estruturas aninhadas.
// Indexed: keys 0, 1, 2 are assigned automatically
$fruits = ["apple", "banana", "cherry"];

// Associative: you pick the keys
$colors = ["apple" => "red", "banana" => "yellow", "cherry" => "dark red"];

// Multidimensional: values are themselves arrays
$basket = [
    ["name" => "apple",  "qty" => 4],
    ["name" => "banana", "qty" => 6],
];

Cada forma tem seu próprio capítulo dedicado: arrays indexados, arrays associativos e arrays multidimensionais.

Criando Arrays PHP

Existem duas sintaxes equivalentes. A sintaxe curta [] (PHP 5.4+) é preferida no código moderno; a função mais antiga array() faz exatamente a mesma coisa.

// Short array syntax — recommended
$fruits = ["apple", "banana", "cherry"];

// Long syntax with the array() language construct
$fruits = array("apple", "banana", "cherry");

Você também pode construir um array de forma incremental. Atribuir a $arr[] acrescenta com a próxima chave inteira, e atribuir a uma chave nomeada cria ou sobrescreve essa entrada:

$fruits = [];
$fruits[] = "apple";     // key 0
$fruits[] = "banana";    // key 1
$fruits["best"] = "fig"; // string key "best"

Acessando Elementos de um Array

Leia um valor com [], passando um índice inteiro para arrays indexados ou uma chave string para arrays associativos.

<?php
$fruits = ["apple", "banana", "cherry"];
$colors = ["apple" => "red", "banana" => "yellow"];

echo $fruits[0];        // apple
echo "\n";
echo $colors["apple"];  // red
?>

Ler uma chave que não existe emite um aviso e retorna null. Verifique primeiro com isset() (verdadeiro somente quando a chave existe e não é null) ou array_key_exists() (verdadeiro mesmo quando o valor armazenado é null), ou forneça um valor padrão com o operador null-coalescing:

<?php
$colors = ["apple" => "red"];

$banana = $colors["banana"] ?? "unknown"; // no warning, returns "unknown"
echo $banana;
?>

Adicionando e Removendo Elementos

PHP fornece funções dedicadas para modificar um array por qualquer uma das extremidades:

  • array_push($arr, $value) — adiciona ao final (ou use simplesmente $arr[] = $value).
  • array_pop($arr) — remove e retorna o último elemento.
  • array_unshift($arr, $value) — adiciona ao início.
  • array_shift($arr) — remove e retorna o primeiro elemento, reindexando os demais.
  • unset($arr[$key]) — exclui um elemento específico (isso deixa uma lacuna nas chaves inteiras).
<?php
$fruits = ["apple", "banana", "cherry"];

array_push($fruits, "mango"); // ["apple","banana","cherry","mango"]
$last = array_pop($fruits);   // $last = "mango"
unset($fruits[1]);            // removes "banana", keys 0 and 2 remain

print_r($fruits);
?>

Saída:

Array
(
    [0] => apple
    [2] => cherry
)

Observe a ausência do [1]unset() não renumera. Para compactar as chaves de volta para 0, 1, 2…, execute array_values($fruits). Para mais detalhes, veja array_push e array_pop.

Percorrendo Arrays em Loop

foreach é a forma idiomática de percorrer um array; funciona tanto para arrays indexados quanto associativos e fornece a chave e o valor.

<?php
$colors = ["apple" => "red", "banana" => "yellow", "cherry" => "dark red"];

foreach ($colors as $fruit => $color) {
    echo "$fruit is $color\n";
}
?>

Saída:

apple is red
banana is yellow
cherry is dark red

Veja o capítulo sobre o loop foreach e a visão geral dos loops PHP para mais padrões.

Mesclando Arrays

array_merge() combina dois ou mais arrays em um novo. Esteja ciente de como ele trata as chaves: chaves inteiras são renumeradas, mas chaves string colidem — o valor de um array posterior substitui o de um anterior com a mesma chave string.

php— editable, runs on the server

Saída:

Array
(
    [0] => apple
    [1] => banana
    [2] => cherry
    [3] => mango
)

Se você só precisa anexar arrays numerados, o operador spread é uma alternativa concisa: $all = [...$fruits1, ...$fruits2];. Para mesclagens com chaves string onde o primeiro valor deve prevalecer, use o operador de união +. Mais detalhes no capítulo array_merge.

Funções Auxiliares Úteis para Arrays

A biblioteca padrão do PHP tem dezenas de funções para arrays. Algumas que você usará constantemente:

FunçãoO que faz
count($arr)Número de elementos
in_array($v, $arr)Se um valor existe (detalhes)
array_keys($arr)Todas as chaves como um novo array (detalhes)
array_values($arr)Todos os valores, reindexados a partir de 0
sort($arr)Ordenar valores no lugar (ordenando arrays)
<?php
$fruits = ["apple", "banana", "cherry"];

echo count($fruits);                              // 3
echo "\n";
echo in_array("banana", $fruits) ? "yes" : "no";  // yes
?>

Armadilhas Comuns

  • Chaves são únicas. Atribuir a uma chave existente a sobrescreve em vez de adicionar uma segunda entrada.
  • "1" e 1 colidem. Chaves string numéricas são convertidas para inteiros, então $a["1"] e $a[1] são o mesmo slot.
  • Arrays são copiados por valor. Passar um array para uma função dá a essa função uma cópia; o original permanece inalterado, a menos que você o passe por referência (&$arr).
  • unset() deixa buracos. Use array_values() depois se precisar de um índice limpo e contíguo.

Conclusão

Arrays PHP são a base para armazenar e organizar dados — de uma simples lista de valores a registros aninhados. Domine as três formas, as operações de criar/ler/adicionar/remover, o foreach e algumas funções auxiliares, e você poderá lidar com a grande maioria das tarefas de dados do mundo real em PHP. A partir daqui, aprofunde-se em arrays indexados, arrays associativos e ordenando arrays.

Prática

Prática
Quais são os diferentes tipos de arrays em PHP?
Quais são os diferentes tipos de arrays em PHP?
Was this page helpful?