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 redVeja 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.
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ção | O 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"e1colidem. 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. Usearray_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.