Arrays Indexados
Arrays indexados são a forma mais básica de estrutura de dados em PHP. Eles utilizam números inteiros como chaves, começando automaticamente do índice 0. Essa é a representação clássica de um array, semelhante a listas em outras linguagens de programação.
<?php
// Declaração usando colchetes
$frutas = ['Maçã', 'Banana', 'Laranja'];
// Ou usando array()
$numeros = array(10, 20, 30, 40);
// Acessando elementos
echo $frutas[0]; // Output: Maçã
echo $frutas[2]; // Output: Laranja
// Adicionando novos elementos
$frutas[] = 'Melancia'; // Adiciona no próximo índice disponível
$frutas[10] = 'Uva'; // Define em posição específica
// Iterando com foreach
foreach ($frutas as $fruta) {
echo $fruta . "\n";
}
// Iterando com índice
foreach ($frutas as $indice => $fruta) {
echo "[$indice] => $fruta\n";
}
?>
Operações Comuns
As operações mais frequentes incluem adicionar, remover e contar elementos. Use count() para obter o tamanho, array_push() para adicionar múltiplos elementos e array_pop() para remover do final. A função in_array() verifica se um valor existe no array.
<?php
$cores = ['Vermelho', 'Azul'];
// Adicionar elementos
array_push($cores, 'Verde', 'Amarelo');
echo count($cores); // Output: 4
// Remover último elemento
$ultima = array_pop($cores); // Retorna 'Amarelo'
// Verificar existência
if (in_array('Azul', $cores)) {
echo "Azul existe no array";
}
// Encontrar índice de um valor
$indice = array_search('Verde', $cores);
echo $indice; // Output: 2
?>
Arrays Associativos
Arrays associativos usam chaves nomeadas (strings) em vez de índices numéricos. Isso os torna ideais para representar dados estruturados, como registros de banco de dados ou configurações.
<?php
// Declaração com chaves nomeadas
$usuario = [
'nome' => 'João Silva',
'email' => 'joao@email.com',
'idade' => 28,
'ativo' => true
];
// Acessando valores
echo $usuario['nome']; // Output: João Silva
echo $usuario['idade']; // Output: 28
// Adicionando novos pares chave-valor
$usuario['telefone'] = '11999999999';
$usuario['cidade'] = 'São Paulo';
// Iterando
foreach ($usuario as $chave => $valor) {
echo "$chave: $valor\n";
}
// Verificar se chave existe
if (isset($usuario['email'])) {
echo "Email cadastrado";
}
?>
Manipulação de Chaves e Valores
Funções como array_keys() retornam todas as chaves, array_values() retorna apenas os valores, e array_merge() combina arrays. Para remover uma chave específica, use unset(). A função array_key_exists() é mais segura que isset() quando a chave pode ter valor null.
<?php
$produto = [
'id' => 1,
'nome' => 'Notebook',
'preco' => 3500.00,
'estoque' => 5
];
// Obter todas as chaves
$chaves = array_keys($produto);
print_r($chaves);
// Output: Array ([0] => id [1] => nome [2] => preco [3] => estoque)
// Obter apenas valores
$valores = array_values($produto);
// Remover uma chave
unset($produto['estoque']);
// Mesclar arrays
$novosDados = ['desconto' => 10, 'categoria' => 'Eletrônicos'];
$produto = array_merge($produto, $novosDados);
// Verificar chave
if (array_key_exists('nome', $produto)) {
echo "Chave 'nome' existe";
}
?>
Arrays Multidimensionais
Arrays multidimensionais são arrays que contêm outros arrays como valores. Eles simulam matrizes ou estruturas mais complexas e são essenciais para trabalhar com dados aninhados.
<?php
// Array de arrays (matriz)
$matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
echo $matriz[0][1]; // Output: 2
echo $matriz[2][2]; // Output: 9
// Array associativo contendo arrays
$empresa = [
'departamentos' => [
'TI' => ['João', 'Maria', 'Pedro'],
'RH' => ['Ana', 'Carlos'],
'Vendas' => ['Bruno', 'Sofia', 'Lucas']
],
'funcionarios' => [
[
'nome' => 'João',
'departamento' => 'TI',
'salario' => 5000
],
[
'nome' => 'Ana',
'departamento' => 'RH',
'salario' => 4500
]
]
];
// Acessando dados complexos
echo $empresa['departamentos']['TI'][0]; // Output: João
echo $empresa['funcionarios'][0]['salario']; // Output: 5000
// Iterando estruturas aninhadas
foreach ($empresa['funcionarios'] as $func) {
echo $func['nome'] . " - R$ " . $func['salario'] . "\n";
}
?>
Manipulação Avançada
Para arrays multidimensionais, use array_map() para aplicar funções a todos os elementos, array_filter() para filtrar baseado em condições, e usort() para ordenação customizada. Essas operações são fundamentais em processamento de dados.
<?php
$vendas = [
['produto' => 'Notebook', 'valor' => 3500, 'quantidade' => 2],
['produto' => 'Mouse', 'valor' => 50, 'quantidade' => 10],
['produto' => 'Teclado', 'valor' => 200, 'quantidade' => 5]
];
// Calcular total de cada venda
$totais = array_map(function($item) {
return $item['valor'] * $item['quantidade'];
}, $vendas);
print_r($totais); // Array ([0] => 7000 [1] => 500 [2] => 1000)
// Filtrar vendas com valor > 100
$caros = array_filter($vendas, function($item) {
return $item['valor'] > 100;
});
// Ordenar por valor (decrescente)
usort($vendas, function($a, $b) {
return $b['valor'] <=> $a['valor'];
});
// Extrair apenas nomes dos produtos
$nomes = array_column($vendas, 'produto');
print_r($nomes); // Array ([0] => Teclado [1] => Notebook [2] => Mouse)
?>
Conclusão
Dominando arrays em PHP, você tem domínio sobre a manipulação fundamental de dados. Arrays indexados oferecem simplicidade para listas sequenciais, arrays associativos permitem trabalhar com dados estruturados de forma intuitiva, e arrays multidimensionais abrem possibilidades para representar estruturas complexas como bancos de dados e APIs. Pratique combinações dessas técnicas — aplicações reais frequentemente mesclam esses conceitos. Compreender as funções built-in do PHP como array_map(), array_filter() e array_column() o tornará muito mais produtivo e seu código mais limpo e profissional.