W3docs

Entendendo Arrays Associativos em PHP

Aprenda arrays associativos em PHP: crie com chaves string, leia e atualize valores, itere com foreach, ordene por chave ou valor e evite erros comuns.

Um array associativo em PHP armazena valores sob chaves nomeadas em vez de posições numéricas. Onde um array indexado responde "o que está na posição 2?", um array associativo responde "qual é o valor para email?" — que é exatamente como você modela registros, configurações e tabelas de consulta em código real.

Este capítulo aborda como criar arrays associativos, ler e atualizar valores, percorrê-los em loop, ordenar por chave ou valor e evitar os erros comuns que atrapalham iniciantes.

O que é um array associativo?

Um array associativo é um array cujos elementos são acessados por uma chave string (também chamada de índice) em vez de por uma posição inteira. Cada chave deve ser única — atribuir um valor a uma chave que já existe sobrescreve o valor antigo.

$user = [
    "name"  => "Alice",
    "email" => "[email protected]",
    "age"   => 30,
];

Internamente, PHP tem apenas um tipo de array. Um array "indexado" é simplesmente um array associativo cujas chaves são os inteiros 0, 1, 2, …. É por isso que você pode misturar livremente chaves string e inteiras no mesmo array.

Criando um array associativo

Há duas formas equivalentes de construir um. A sintaxe curta [] (PHP 5.4+) é preferida no código moderno; a função array() faz a mesma coisa.

// Short array syntax (recommended)
$fruits = ["apple" => "red", "banana" => "yellow", "grapes" => "green"];

// Long syntax — identical result
$fruits = array("apple" => "red", "banana" => "yellow", "grapes" => "green");

Você também pode adicionar chaves uma de cada vez, o que é conveniente ao construir um array em um loop:

$prices = [];
$prices["coffee"] = 2.5;
$prices["tea"]    = 2.0;

A ordem em que você atribui as chaves é preservada — arrays PHP lembram a ordem de inserção, então iterar posteriormente dará coffee antes de tea.

Acessando valores

Leia um valor com sua chave entre colchetes:

$fruits = ["apple" => "red", "banana" => "yellow"];
echo $fruits["apple"]; // red

Se a chave não existir, PHP emite um aviso e retorna null. Para ler com segurança, verifique primeiro com array_key_exists(), ou use o operador null-coalescing ?? para fornecer um valor padrão:

$color = $fruits["mango"] ?? "unknown";
echo $color; // unknown — no warning

Adicionando e modificando valores

Atribua com uma chave para atualizar um elemento existente ou adicionar um novo:

$fruits = ["apple" => "red"];

$fruits["apple"]  = "green"; // modify existing key
$fruits["cherry"] = "dark red"; // add a new key

print_r($fruits);
// Array ( [apple] => green [cherry] => dark red )

Remova um elemento com unset():

unset($fruits["apple"]);

Percorrendo um array associativo em loop

Um loop for comum não funciona aqui porque não há índices numéricos sequenciais. Use foreach com a forma key => value para percorrer tanto as chaves quanto os valores:

$user = ["name" => "Alice", "email" => "[email protected]", "age" => 30];

foreach ($user as $field => $value) {
    echo "$field: $value\n";
}
// name: Alice
// email: [email protected]
// age: 30

Ordenando arrays associativos

Como as chaves carregam significado, você ordena com funções que preservam a associação chave/valorsort() descartaria as chaves. Use:

  • ksort() / krsort() — ordena por chave, crescente / decrescente
  • asort() / arsort() — ordena por valor, crescente / decrescente
$scores = ["Bob" => 75, "Alice" => 90, "Carol" => 82];

arsort($scores); // sort by value, highest first

foreach ($scores as $name => $score) {
    echo "$name: $score\n";
}
// Alice: 90
// Carol: 82
// Bob: 75

Consulte Ordenando Arrays em PHP para o conjunto completo de funções de ordenação.

Erros comuns

  • Reutilizar uma chave sobrescreve silenciosamente. ["a" => 1, "a" => 2] resulta em ["a" => 2] — sem erro, o primeiro valor é perdido.
  • Chaves string numéricas tornam-se inteiros. ["10" => "x"] é armazenado sob a chave inteira 10. $arr["10"] e $arr[10] acessam o mesmo elemento.
  • Chaves true/false/null são convertidas. Uma chave true torna-se 1, false e null tornam-se 0 e "". Use strings simples e inteiros como chaves.
  • Não confie em for ($i = 0; …). Use foreach, array_keys(), ou array_values() para iterar quando as chaves não forem 0..n.

Conclusão

Arrays associativos permitem armazenar dados sob chaves string únicas e significativas — ideais para registros, configurações e tabelas de consulta. Leia com $arr["key"] (proteja chaves ausentes com ??), atualize ou adicione por atribuição, remova com unset(), itere com foreach e ordene com as funções que preservam a relação chave/valor, como ksort() e asort().

Para ir além, explore arrays indexados, arrays multidimensionais (arrays de arrays associativos) e array_keys() para extrair todas as chaves de uma vez.

Prática

Prática
O que é verdade sobre arrays associativos em PHP?
O que é verdade sobre arrays associativos em PHP?
Was this page helpful?