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"]; // redSe 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 warningAdicionando 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: 30Ordenando arrays associativos
Como as chaves carregam significado, você ordena com funções que preservam a associação chave/valor — sort() descartaria as chaves. Use:
ksort()/krsort()— ordena por chave, crescente / decrescenteasort()/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: 75Consulte 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 inteira10.$arr["10"]e$arr[10]acessam o mesmo elemento. - Chaves
true/false/nullsão convertidas. Uma chavetruetorna-se1,falseenulltornam-se0e"". Use strings simples e inteiros como chaves. - Não confie em
for ($i = 0; …). Useforeach,array_keys(), ouarray_values()para iterar quando as chaves não forem0..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.