Arrays em PHP
LidoEsta aula aborda os conceitos fundamentais de arrays em PHP, incluindo arrays indexados e associativos, formas de criação com colchetes e a função array(), acesso a elementos e arrays multidimensionais. Ao final, o aluno será capaz de criar, manipular e acessar arrays de forma eficiente em PHP.
Arrays são uma das estruturas de dados mais importantes em PHP, permitindo armazenar múltiplos valores em uma única variável. Diferente de linguagens como C ou Java, os arrays em PHP são na verdade mapas ordenados, o que significa que podem associar chaves a valores, onde as chaves podem ser inteiros ou strings. Essa flexibilidade torna os arrays extremamente versáteis, sendo utilizados em praticamente qualquer aplicação PHP, desde listas simples até estruturas complexas de dados.
Nesta aula, vamos explorar os tipos de arrays, como criá-los, acessar seus elementos e trabalhar com arrays multidimensionais. Você verá exemplos práticos e aprenderá boas práticas para evitar armadilhas comuns.
Indexados e associativos
Em PHP, existem dois tipos principais de arrays: indexados e associativos. Arrays indexados usam números inteiros como chaves, normalmente começando em 0. São semelhantes a listas ou vetores em outras linguagens. Por exemplo, uma lista de frutas pode ser representada como um array indexado.
Arrays associativos usam chaves nomeadas (strings) para acessar valores, funcionando como um dicionário ou mapa. Isso permite armazenar dados com significado semântico, como informações de um usuário (nome, email, idade).
// Array indexado
$frutas = ['maçã', 'banana', 'laranja'];
// Array associativo
$usuario = [
'nome' => 'João',
'email' => 'joao@example.com',
'idade' => 30
];
É importante notar que um array pode misturar chaves inteiras e strings, mas isso é raro e pode causar confusão. Na prática, é recomendável manter consistência no tipo de chave utilizado.
Criação ([] e array())
Antes do PHP 5.4, a única forma de criar um array era usando a função array(). A partir do PHP 5.4, a sintaxe com colchetes [] foi introduzida e tornou-se a mais comum por ser mais concisa e familiar para programadores de outras linguagens.
Ambas as formas são equivalentes, mas a sintaxe curta é preferida na maioria dos projetos modernos. A função array() ainda é válida e pode ser encontrada em código legado.
// Usando array()
$cores1 = array('vermelho', 'verde', 'azul');
// Usando colchetes
$cores2 = ['vermelho', 'verde', 'azul'];
// Associativo com array()
$pessoa1 = array('nome' => 'Maria', 'idade' => 25);
// Associativo com colchetes
$pessoa2 = ['nome' => 'Maria', 'idade' => 25];
Você também pode criar arrays vazios e adicionar elementos posteriormente. A atribuição sem chave adiciona elementos com chave numérica incremental.
$lista = [];
$lista[] = 'item 1';
$lista[] = 'item 2';
print_r($lista); // Array ( [0] => item 1 [1] => item 2 )
Acesso
Para acessar um elemento de um array, utilize a sintaxe $array[chave]. Em arrays indexados, a chave é o índice numérico; em associativos, é a string correspondente.
$frutas = ['maçã', 'banana', 'laranja'];
echo $frutas[0]; // maçã
$usuario = ['nome' => 'João', 'email' => 'joao@example.com'];
echo $usuario['nome']; // João
Para percorrer todos os elementos, você pode usar foreach, que é a forma mais comum e segura. Também é possível usar for para arrays indexados, mas é menos recomendado porque exige controle do tamanho e pode falhar se houver lacunas nos índices.
foreach ($frutas as $fruta) {
echo $fruta . "\n";
}
// Com chaves
foreach ($usuario as $chave => $valor) {
echo "$chave: $valor\n";
}
É importante verificar se uma chave existe antes de acessá-la, para evitar avisos ou erros. Use isset() ou array_key_exists() para isso.
if (isset($usuario['nome'])) {
echo $usuario['nome'];
} else {
echo 'Chave não existe';
}
Multidimensionais
Arrays multidimensionais são arrays que contêm outros arrays como elementos. Isso permite criar estruturas de dados complexas, como matrizes, tabelas e árvores. Em PHP, não há limite para a profundidade da aninhamento, mas na prática é recomendável manter poucos níveis para legibilidade.
$matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
echo $matriz[1][2]; // 6
Arrays associativos multidimensionais são comuns para representar coleções de objetos, como uma lista de usuários com seus dados.
$usuarios = [
[
'nome' => 'Ana',
'email' => 'ana@example.com'
],
[
'nome' => 'Carlos',
'email' => 'carlos@example.com'
]
];
echo $usuarios[0]['nome']; // Ana
Para percorrer um array multidimensional, você pode usar loops aninhados. O foreach é particularmente útil.
foreach ($usuarios as $usuario) {
echo $usuario['nome'] . ' - ' . $usuario['email'] . "\n";
}
Arrays multidimensionais são amplamente utilizados em aplicações web, por exemplo, para processar formulários com múltiplos campos ou manipular dados de bancos de dados.
Boas práticas e observações finais
- Preferir a sintaxe curta
[]em novos códigos. - Usar nomes de chaves descritivas em arrays associativos para melhorar a legibilidade.
- Evitar misturar tipos de chaves em um mesmo array.
- Antes de acessar um elemento, verificar se a chave existe com
isset()ouarray_key_exists(). - Para arrays grandes, prefira
foreachem vez defor. - Quando usar arrays multidimensionais, mantenha a profundidade mínima necessária e documente a estrutura.
Exercícios
- Crie um array indexado com os nomes de cinco países e exiba o terceiro elemento.
- Crie um array associativo com as informações de um livro (título, autor, ano) e imprima cada valor em uma linha separada usando
foreach. - Dado um array
$numeros = [10, 20, 30], adicione o número 40 ao final e depois exiba o array comprint_r(). - Crie um array bidimensional que represente uma tabela de multiplicação de 1 a 3 (3x3) e exiba o valor da posição (2,1) (linha 2, coluna 1).
- Escreva uma função que receba um array associativo de usuários (com nome e email) e retorne uma lista de emails em um array indexado.
$paises = ['Brasil', 'Argentina', 'Chile', 'Peru', 'Colômbia'];
echo $paises[2]; // Chile
$livro = [
'titulo' => 'Dom Casmurro',
'autor' => 'Machado de Assis',
'ano' => 1899
];
foreach ($livro as $chave => $valor) {
echo "$chave: $valor\n";
}
$numeros = [10, 20, 30];
$numeros[] = 40;
print_r($numeros);
// Array ( [0] => 10 [1] => 20 [2] => 30 [3] => 40 )
$tabela = [
[1, 2, 3],
[2, 4, 6],
[3, 6, 9]
];
echo $tabela[2][1]; // 6 (linha 2, coluna 1)
function obterEmails($usuarios) {
$emails = [];
foreach ($usuarios as $usuario) {
$emails[] = $usuario['email'];
}
return $emails;
}
$usuarios = [
['nome' => 'Ana', 'email' => 'ana@example.com'],
['nome' => 'Carlos', 'email' => 'carlos@example.com']
];
print_r(obterEmails($usuarios));