Guia definitivo de arrays no PHP
O que é um array no PHP?
array
é um dos diversos tipos de dados que a linguagem PHP oferece. É uma forma de armazenar vários valores numa única variável. Numa única variável $numeros
nós podemos armazenar 5 números de uma vez só, como no exemplo a seguir:
/*
* A variável $numeros possui os 5 valores listados
* dentro dos colchetes: 4, 3, 2, 1 e 0.
*/
$numeros = [4, 3, 2, 1, 0];
Desta forma é possível acessar estes valores através da sintaxe de colchetes. Ainda considerando a variável $numeros
que criamos acima, podemos acessar cada elemento como no trecho de código a seguir:
echo "O segundo elemento é: " . $numeros[1];
// O segundo elemento é: 3
Note que o valor $numeros[1]
faz referência ao segundo valor que colocamos entre colchetes ao criar a variável $numeros
, o número inteiro 3.
De forma parecida a gente pode acessar o valor $numeros[0]
(inteiro 4) ou $numero[3]
(inteiro 1).
O array
do PHP é mais poderoso que o de outras linguagens
É importante notar que o array
do PHP é muito mais flexível e poderoso do que em diversas outras linguagens, dada a natureza do sistema de tipos que o PHP oferece. Isto porque o array
do PHP pode se comportar como vetor, lista, pilha, fila, tupla ou dicionário. Tudo num único tipo, integrado com diferentes aspectos da linguagem.
Para efeito de comparação, vamos ver o quão poderoso o tipo array
é comparado com conceitos de outras linguagens:
Conceito | Outra linguagem | PHP |
---|---|---|
Vetor | Na linguagem C (e muitas outras) os vetores possuem somente um tipo de dado. Por exemplo int numeros[10] só pode conter elementos do tipo int . Ver mais sobre. | Em PHP vetores podem conter elementos de qualquer tipo: strings, inteiros e objetos num mesmo vetor, sem problema algum. |
Listas, filhas e pilhas | Em Java usam-se diferentes classes para cada comportamento: List, Queue e Stack. Ver mais sobre. | Em PHP o tipo array pode ser utilizado como lista, filha ou pilha naturalmente. Basta utilizar as funções específicas como array_shift() ou array_pop() . |
Dicionário | A linguagem C++ tem uma biblioteca específica chamada STL (Standard Template Library) que oferece o tipo map<I,T> para implementação de dicionários. Com limitações semelhantes aos vetores da linguagem C. Ver mais sobre. | Arrays em PHP podem se comportar como maps ou hashmaps sem qualquer necessidade de adaptar a linguagem. |
É claro que nem tudo são flores, e o array
do PHP não é melhor em absolutamente TUDO quando comparado a outras linguagens. O map<I,T>
do C++ por exemplo consegue garantir o tipo interno dos dados, enquanto em PHP é necessário fazer algumas verificações adicionais em código ou via análise estática com ferramentas como o PHPStan.
Como criar arrays de índice numérico ou do tipo lista em PHP?
Para criar um array
de índice numérico, ou vetor, basta omitir as chaves e passar apenas valores para o array entre colchetes ([
e ]
).
No exemplo abaixo vamos criar um array
de índice numérico com 3 frutas: banana, maçã e manga:
$frutas = ['manga', 'maçã', 'banana'];
echo $frutas[0]; // manga
echo $frutas[1]; // maçã
echo $frutas[2]; // banana
Podemos notar algumas coisas:
Acessamos cada elemento através de seu índice usando a sintaxe de colchetes;
Os índices estão em ordem crescente, começando em 0 (zero);
Os elementos (banana, maçã e manga) não são ordenados alfabeticamente mas por ordem de inserção
manga
é o primeiro elemento, portanto recebe o índice 0
. maçã
é o segundo, recebe o índice 1
. banana
é o terceiro elemento e recebe o índice 2
.
Na linguagem PHP, em contrates com Java ou C/C++, é possível misturar tipos dentro de um vetor. O exemplo a seguir é um código válido:
$balaio = ['comida de gato', new Gato(), false];
Independentemente de como usaríamos este vetor, temos a flexibilidade de inserir uma string
, um objeto
e um boolean
no mesmo balaio.
Como criar arrays associativos, mapas dicionários em PHP?
Linguagens como Python ou JavaScript têm o conceito de Dicionário, enquanto Java e C++ possuem seus Mapas. O PHP une todos estes conceitos num formato especial de array: o array associativo.
Um array associativo em PHP é um array
parecido com o de índice numérico, com a diferença que nós escolhemos o índice de cada elemento em vez de deixar a linguagem escolher a ordem crescente natural. Além disso, nós podemos também escolher índices que sejam strings em vez de números. Veja:
$ranking_frutas = [
0 => 'manga',
5 => 'uva',
15 => 'maçã',
];
$frutas_fotos = [
'manga' => '/fotos/manga.jpg',
'uva' => '/fotos/uva.jpg',
'maçã' => '/fotos/maca.jpg',
];
Enquanto o primeiro array $ranking_frutas
ainda tem índice numérico, sua ordenação não é mais natural: nós forçamos que manga
, a melhor fruta do planeta terra, fique em primeiríssimo lugar, e apesar de não saber quem seria o segundo ou terceiro, colocamos maçã
, a fruta mais desnecessária que tem, na posição 15.
Já o segundo array é associativo e usa chaves do tipo string
. Note que $frutas_fotos
não usa números do lado esquerdo, mas sim o nome das frutas. E do lado direito o link para fotos que representam aquela fruta: fruta => foto
.
Desta forma podemos acessar os dois arrays usando a mesma sintaxe de colchetes:
echo "A melhor fruta do mundo é: $ranking_frutas[0].";
// A melhor fruta do mundo é: manga
echo "Aqui tem uma foto de manga: $frutas_fotos['manga']."
// Aqui tem uma foto de manga: /fotos/manga.jpg
Portanto as sintaxes $array[0]
e $array['string']
são válidas.
Como criar arrays híbridos no PHP?
Você já deve ter calculado que já que é possível criar arrays de índices numéricos e arrays associativos usando a mesma sintaxe, talvez seja possível misturar os dois. E o pensamento é 100% correto.
Em PHP é possível utilizar índices numéricos e de texto numa mesma variável como no exemplo a seguir:
$tudo_junto_e_misturado = [
0 => 'manga',
'manga' => 'Melhor fruta, slc!'
];
echo $tudo_junto_e_misturado[0]; // manga
echo $tudo_junto_e_misturado['manga']; // Melhor fruta, slc!
Algumas funções são específicas para arrays de índice numérico, outras para arrays associativos, outras para todos os arrays. Com o tempo e prática você vai entender em quais cenários faz sentido usar um array híbrido. Spoiler: quase nunca faz sentido.
Como criar arrays bidimensionais ou matrizes em PHP?
Como em todas as linguagens em que é possível criar vetores, o princípio da composição nos permite criar vetores de múltiplas dimensões, também conhecidos como matrizes. Na teoria é exatamente o contrário: matrizes podem ter diferentes dimensões, inclusive uma única e neste caso a matriz de única dimensão é chamada de vetor.
Enfim… tudo isso pra te dizer que um array pode conter outros arrays. Por exemplo, podemos representar um tabuleiro de jogo da velha com um array bidimensional assim:
$tabuleiro = [
['O', '', 'X'],
['O', 'X', ''],
['X', 'O', ''],
];
echo "A posição (0, 2) tem o valor $tabuleiro[0][2].";
// A posição (0, 2) tem o valor X.
echo "A posição (2, 1) tem o valor $tabuleiro[2][1].";
// A posição (2, 0) tem o valor O.
E portanto para acessar a primeira “linha” usamos $tabuleiro[0]
e a última linha $tabuleiro[2]
. Enquanto a primeira célula da primeira linha podemos acessar com $tabuleiro[0][0]
e a última célula da primeira linha com $tabuleiro[0][2]
.
Como adicionar um elemento ao array
do PHP?
Em PHP, diferentemente da linguagem C, o array
tem tamanho dinâmico. Portanto você pode expandir um array o quanto quiser (e de acordo com a memória RAM disponível em seu ambiente).
Suponha o array $pares
com os seguintes números pares: [0, 2, 4, 6]
. Vamos ver diferentes formas de adicionar os próximos pares:
Como adicionar um elemento usando a sintaxe de índice?
Já vimos que é possível acessar um valor através de seu índice numérico. Por exemplo $pares[2]
nos traria o valor 4
. Mas também é possível alterar valores usando esta sintaxe.
Portanto caso queiramos adicionar o próximo par à variável $pares
podemos associar seu último índice + 1
com o próximo número. Assim:
// Último índice = 3
$pares[4] = 8;
Neste caso nós sabíamos que o último índice era 3
, mas podemos fazer isso de forma dinâmica quando não soubermos quais índices existem no array:
$indice = count($pares); // $indice = 5
$pares[$indice] = 10;
No exemplo acima associamos o valor count($pares) à variável $indice
. Nós já tínhamos os valores 0, 2, 4 e 6
, e depois adicionamos o valor 8
ao final. Portanto $indice
aqui possui o valor 5, que é o número de elementos existentes no array $pares
. Depois associamos o valor 10
ao índice $indice
(5).
Como adicionar um elemento usando a sintaxe de associativa?
É muito semelhante à forma de trabalhar com índices numéricos, porém utilizamos string
como índices. Vamos por exemplo criar um array associativo do tipo matriz para armazenar números pares e ímpares:
$numeros = [
'pares' => [0, 2, 4, 6],
'impares' => [1, 3, 5, 7],
];
echo $numeros['pares'][2]; // 4
echo $numeros['impares'][1]; // 3
Perceba que:
A sintaxe é a mesma: acessamos o elemento
pares
com a sintaxe de colchetes$numeros['pares']
;É possível guardar qualquer coisa dentro de um
array
, inclusive outroarray
: nós guardamos o array$pares
dentro do array$numeros
A sintaxe antiga de arrays do PHP
Em alguns tutoriais e livros mais antigos, você vai encontrar uma sintaxe diferente para trabalhar com array
no PHP. Então deixa eu te mostrar como nós costumávamos criar arrays no PHP na idade da pedra da computação:
$meuArray = array(0, 1, 2, 3, 4);
echo "O terceiro elemento é o número $meuArray[2].";
// O terceiro elemento é o número 3.
Esta sintaxe ainda funciona na linguagem PHP, mas está sendo abandonada aos poucos. Portanto utilize colchetes para criar arrays SEMPRE.
Diferentes utilidades do array no PHP
Arrays são praticamente o coração da linguagem PHP. Um dos motivos de o PHP ser tão popular, na minha opinião, é a flexibilidade agregada pelos arrays e como eles se integram a praticamente tudo no ecossistema PHP.
Algumas utilidades do array no PHP incluem, mas não se limitam a:
- Listas
- Dicionários
- Tuplas
- Pilhas e filas
Vamos ver cada um destes itens com exemplos.
Utilizando arrays PHP como listas
Listas são segmentos de valores que podem ou não ser ordenados. Os arrays PHP tornam este trabalho muito simples de se realizar.
Por exemplo, abaixo temos uma lista de frutas completamente desordenada:
$frutas = ['manga', 'banana', 'maçã'];
echo $frutas[0]; // manga
echo $frutas[1]; // banana
echo $frutas[2]; // maçã
Adicionalmente, se quisermos garantir que a lista seja ordenada, podemos aplicar a função sort() para ordenar seus elementos:
$frutas = ['manga', 'banana', 'maçã'];
if (sort($frutas)) {
echo $frutas[0]; // banana
echo $frutas[1]; // maçã
echo $frutas[2]; // manga
}
Utilizando arrays PHP como dicionários
Dicionários são estruturas no formato chave => valor
, em PHP são chamados arrays associativos.
Um exemplo de utilização de dicionários é o agrupamento de dados para gerar relatórios. Por exemplo, podemos representar o preço de uma ação em diferentes horários do dia no exemplo a seguir:
$seriePrecos = [
'10am' => 19.20,
'3pm' => '21.02',
'5pm' => '20.59',
];
echo "A ação CODAMOS tinha o preço $seriePrecos['10am'] às 10am de hoje.";
// A ação CODAMOS tinha o preço 19.20 às 10am de hoje.
Eu citei acima o formato chave => valor
, para deixar claro o que aquilo significa: no array acima, 10am, 3pm e 5pm
são chaves enquanto 19.20, 21.02 e 20.59
são valores.
O maior motivo para utilizarmos dicionários no PHP é adicionar semântica ao nosso código. Esta é uma estrutura de dados muito poderosa e flexível que nos permite representar diferentes conceitos usando o formato chave => valor
.
Utilizando arrays PHP como tuplas
Tuplas são dados que estão relacionados e têm pouco ou nenhum significado quando isolados.
Por exemplo, num plano cartesiano as coordenadas são tuplas de dois elementos: x e y. Portanto o valor (x, y)
pode ser considerado uma tupla.
De forma semelhante, num espaço de três dimensões, as coordenadas seriam (x, y, z)
que também é uma tupla mas de 3 elementos.
Arrays em PHP podem ser utilizados como tuplas naturalmente:
$coordenadas = [10, 20]; // tupla de 2 inteiros
[$x, $y] = $coordenadas; // extraindo valores da tupla
echo "A tupla (x, y) tem valor ($x, $y).";
// A tupla (x, y) tem valor (10, 20).
Utilizando arrays PHP para trabalhar com pilhas e filas
Pilhas são listas em que sempre inserimos valores ao fim do array, e sempre retiramos valores do fim do array. Como uma pilha de pratos: você normalmente coloca o prato no topo da pilha, e tira sempre o prato que está mais ao topo da pilha.
Pilhas sempre utilizam o algoritmo LIFO – Last in, first out. Ou seja: o último elemento que chegou, é o primeiro que vai sair.
Em PHP, os arrays podem ser tratados como pilha ao utilizar as funções array_push() e array_pop():
$pratos = [];
array_push($pratos, 'porcelana');
array_push($pratos, 'plástico');
$pratoDoTopo = array_pop($pratos);
echo "O prato que estava no topo da pilha é feito de $pratoDoTopo.";
// O prato que estava no topo da pilha é feito de plástico.
Exatamente ao contrário do que pilhas fazem, as filas seguem o algoritmo FIFO – First in, first out. Ou seja: quem chega primeiro, sai primeiro! E podemos fazer isso também com a função array_push() para adicionar ao final da fila, e com array_shift() para remover do começo da fila. Para furar a fila podemos também utilizar o array_unshift() que adiciona um elemento logo no começo da fila.
$fila_do_mercado = ['Marcio', 'Maria', 'João'];
$proximo = array_shift($fila_do_mercado);
echo "Vamos atender $proximo agora!";
// Vamos atender Marcio agora!
// Vitória tem preferência na fila
array_unshift($file_do_mercado, 'Vitória');
$proximo = array_shift($fila_do_mercado);
echo "Vamos atender $proximo agora!";
// Vamos atender Vitória agora!
Note que array_unshift() jogou o nome “Vitória” para o começo da fila e portanto este foi o próximo nome a ser chamado.
Como visitar cada elemento de um array no PHP?
Na maioria dos casos nós não queremos acessar apenas um elemento do array
, mas sim percorrer o array inteiro para executar alguma ação.
Para arrays de índice numérico, uma saída comum em outras linguagens como o C, é utilizar um laço de repetição como um for
ou while
juntamente de um contador como no exemplo a seguir:
$frutas = ['manga', 'banana', 'maçã'];
$i = 0;
while ($i < count($frutas)) {
echo "A fruta do índice $i é $frutas[$i].";
$i++;
}
// A fruta do índice 0 é manga.
// A fruta do índice 1 é banana.
// A fruta do índice 2 é maçã.
O laço acima, como você provavelmente já entendeu, é equivalente ao laço for
a seguir:
$frutas = ['manga', 'banana', 'maçã'];
for ($i = 0; $i < count($frutas); $i++) {
echo "A fruta do índice $i é $frutas[$i].";
}
// A fruta do índice 0 é manga.
// A fruta do índice 1 é banana.
// A fruta do índice 2 é maçã.
O método acima funciona na maioria dos casos, mas é problemático caso você precise iterar um array
do tipo dicionário, em que as chaves não são números ordenados.
O jeito mais fácil de percorrer um array, independente do tipo de índice que tiver, é através da estrutura de iteração foreach
. Vejamos o exemplo a seguir:
$frutas = ['manga', 'banana', 'maçã'];
foreach ($frutas as $fruta) {
echo "Fruta: $fruta";
}
// Fruta: manga
// Fruta: banana
// Fruta: maçã
Note que a variável $i
não é necessária para iterar o array. Mas caso você precise desta variável para saber o índice, pode utilizar uma variação do foreach
como no exemplo a seguir:
$frutas = ['manga', 'banana', 'maçã'];
foreach ($frutas as $i => $fruta) {
echo "A fruta do índice $i é $fruta.";
}
// A fruta do índice 0 é manga.
// A fruta do índice 1 é banana.
// A fruta do índice 2 é maçã.
Note que $i
no exemplo acima não é um contador, mas sim o índice do array $frutas
. De forma semelhante, caso o array possua índices do tipo string em vez de numéricos, a mesma sintaxe vai ser de grande ajuda:
$frutas_favoritas = [
'nawarian' => 'manga',
'joana' => 'abacate',
'pedro' => 'mamão',
];
foreach ($frutas_favoritas as $nome => $fruta) {
echo "A fruta favorita de $nome é $fruta.";
}
// A fruta favorita de nawarian é manga.
// A fruta favorita de joana é abacate.
// A fruta favorita de pedro é mamão.
Reparou como a porção $nome => $fruta
são nomes que eu escolhi? Estas variáveis poderiam ter qualquer outro nome. Não é obrigatório chamar sempre de $key => $value
ou $i => $x
. Você pode escolher nomes que façam mais sentido na hora de ler o seu código.
💡 Leia também: como escrever código fácil de ler e de dar manutenção.
Como desestruturar arrays no PHP?
Esta sintaxe é relativamente nova e lembra muito o que fazemos no JavaScript!
Como sabemos, dentro do array podemos ter qualquer tipo de dado, mas as vezes estes dados vêm em pares que fazem algum sentido lógico. Se sabemos desta sequência, podemos desestruturar o array e transformar cada elemento em uma variável com um nome que tenha um sentido semântico maior.
Veja o exemplo em que a variável $coordenadas
sabidamente tem dois elementos: o primeiro é um valor de x
enquanto o segundo elemento é y
. Podemos desestruturar este array para obter estes dois valores como variáveis:
$coordenadas = [10, 20];
[$x, $y] = $coordenadas;
Nós já vimos este exemplo enquanto falávamos sobre tuplas. Mas vamos utilizar um exemplo mais interessante: percorrer dados de uma série histórica de valores e imprimir na tela cada data. E aqui nós vamos desestruturar o array dentro do foreach
! Veja como funciona:
$serie = [
['2022-10-10', 100],
['2022-10-11', 115],
['2022-10-12', 120],
];
foreach ($serie as [$data, $valor]) { // 👈 olha aqui!
echo "Em $data o valor era de $valor.";
}
// Em 2022-10-10 o valor era de 100.
// Em 2022-10-11 o valor era de 115.
// Em 2022-10-11 o valor era de 120.
Também é possível ignorar alguns valores simplesmente adicionando uma vírgula ,
sem nenhum nome de variável. No exemplo a seguir o segundo elemento do array é completamente ignorado:
$frutas = ['manga', 'maçã', 'banana'];
[$manga, , $banana] = $frutas; // maçã nem deveria ser fruta
Isto é bastante útil quando extraímos dados de expressões regulares, por exemplo.
Como extrair elementos do array usando a sintaxe de desempacotamento no PHP?
O desempacotamento de array pode também ser entendido como “expandir” seus elementos, e pra isso a gente usa o operador ellipsis ...
. Você pode misturar esta sintaxe com diversas outras no PHP como podemos ver a seguir.
$pares = [2, 4, 6];
$pares_com_zero = [0, ...$pares];
Note que o array $pares
começa com apenas 3 elementos e que $pares_com_zero
é criado com 0
sendo seu primeiro elemento, seguido de todos os outros presentes em $pares
. Portanto $pares_com_zero
efetivamente tem os valores [0, 2, 4, 6]
.
Desta forma é possível extrair e combinar diferentes arrays.
Como unir dois ou mais arrays no PHP?
Para unir os elementos de dois ou mais arrays existe três formas:
- A função array_merge()
- A soma de array através do operador
+
- Desempacotamento de arrays
Como unir dois arrays utilizando a função array_merge()
A função array_merge() existe justamente pra mesclar (merge) dois arrays em PHP. Você pode passar quantos arrays quiser como argumento, e o retorno será um novo array que une todos os argumentos:
$pares = [0, 2, 4, 6];
$impares = [1, 3, 5, 7];
$numeros = array_merge($pares, $impares);
No exemplo acima o array $numeros
combina números pares e impares. Note que os arrays foram apenas unidos, a ordem dos elementos é a mesma que a original.
Para ordenar os números ímpares e pares no array $numeros
seria necessário aplicar a função sort().
Como unir dois arrays utilizando o operador +
Uma alternativa sintática ao array_merge() é p operador +
, que quando utilizado entre dois arrays realiza a operação de união.
$pares = [0, 2, 4, 6];
$impares = [1, 3, 5, 7];
$numeros = $pares + $impares;
Como unir dois arrays utilizando desempacotamento de arrays
Como vimos antes, é possível obter elementos de um array utilizando a sintaxe de desempacotamento usando o operador ellipsis (...
).
Para unir dois arrays utilizando desempacotamento, podemos fazer como no exemplo a seguir:
$pares = [0, 2, 4, 6];
$impares = [1, 3, 5, 7];
$numeros = [...$pares, ...$impares];
Repare que como nos exemplos anteriores, a união dos arrays não é ordenada e portanto a variável $numeros
agora possui o valor [0, 2, 4, 6, 1, 3, 5, 7]
. Para ordenar os valores, é necessário utilizar a função sort().
Principais funções para trabalhar com array no PHP
Arrays em PHP possuem diversas funções especiais. A documentação oficial da linguagem possui uma lista completa de funções para trabalhar com arrays no PHP.
Vou listar aqui as funções mais comuns e importantes de acordo com a minha experiência.
Função count()
: contar elementos de um array
$numeros = [0, 1, 2, 3, 4];
$total = count($numeros);
echo "O array 'numeros' possui $total elementos.";
// O array 'numeros' possui 5 elementos.
Visite a página da documentação oficial para aprender mais sobre a função count().
Função in_array()
: indica se elemento existe no array
$numeros = [0, 1, 2, 3, 4];
$existe = in_array(2, $numeros) ? 'existe' : 'não existe';
echo "O número 2 $existe no array 'numeros'.";
// O número 2 existe no array numeros.
Visite a página da documentação oficial para aprender mais sobre a função in_array().
Função sort()
: ordena elementos de um array
$numeros = [4, 1, 0, 3, 2];
sort($numeros);
foreach ($numeros as $numero) {
echo "Número: $numero";
}
// Número: 0
// Número: 1
// Número: 2
// Número: 3
// Número: 4
Visite a página da documentação oficial para aprender mais sobre a função sort().
Função shuffle()
: embaralha o array colocando seus elementos em ordem aleatória
$numeros = [0, 1, 2, 3, 4];
shuffle($numeros);
foreach ($numeros as $i => $numero) {
echo "O número $i é $numero.";
}
// O número 0 é 3
// O número 1 é 0
// O número 2 é 1
// O número 3 é 4
// O número 4 é 2
Visite a página da documentação oficial para aprender mais sobre a função shuffle().
Função array_keys()
: obtém apenas chaves (índices) do array, sem valores
$site_pontuacao = [
'https://codamos.com.br' => 10,
'https://thephp.website' => 7,
'https://locaweb.com.br' => 10,
];
$chaves = array_keys($site_pontuacao);
foreach ($chaves as $i => $chave) {
echo "O site $i é $chave.";
}
// O site 0 é https://codamos.com.br
// O site 1 é https://thephp.website
// O site 2 é https://locaweb.com.br
Visite a página da documentação oficial para aprender mais sobre a função array_keys().
Função array_values()
: obtém apenas os valores do array, sem chaves (índices)
$site_pontuacao = [
'https://codamos.com.br' => 10,
'https://thephp.website' => 7,
'https://locaweb.com.br' => 10,
];
$pontuacao = array_values($site_prontuacao);
foreach ($pontuacao as $i => $valor) {
echo "A pontuação $i é $valor.";
}
// A pontuação 0 é 10
// A pontuação 1 é 7
// A pontuação 2 é 10
Visite a página da documentação oficial para aprender mais sobre a função array_values().
Função array_combine()
: une um array de chaves e um array de valores num único array associativo
$sites = [
'https://codamos.com.br',
'https://thephp.website',
'https://locaweb.com.br',
];
$pontuacao = [10, 7, 10];
$site_pontuacao = array_combine($sites, $pontuacao);
foreach ($site_pontuacao as $site => $pontos) {
echo "O site $site tem $pontos pontos.";
}
// O site https://codamos.com.br tem 10 pontos.
// O site https://thephp.website tem 7 pontos.
// O site https://locaweb.com.br tem 10 pontos.
Visite a página da documentação oficial para aprender mais sobre a função array_combine().
Função array_diff()
: indica a diferença entre dois ou mais arrays
$numeros = [0, 1, 2, 3, 4];
$pares = [0, 2, 4];
$diff = array_diff($numeros, $pares);
foreach ($diff as $numero) {
echo "O número $numero existe no array 'numeros' mas não no array 'pares'.";
}
// O número 1 existe no array 'numeros' mas não no array 'pares'.
// O número 3 existe no array 'numeros' mas não no array 'pares'.
Visite a página da documentação oficial para aprender mais sobre a função array_diff().
Função array_merge()
: unindo dois ou mais arrays
$pares = [0, 2];
$mais_pares = [4, 6];
$impares = [1, 3, 5];
$numeros = array_merge($pares, $mais_pares, $impares);
foreach ($numeros as $i => $numero) {
echo "O número $i é $numero.";
}
// O número 0 é 0
// O número 1 é 2
// O número 2 é 4
// O número 3 é 6
// O número 4 é 1
// O número 4 é 3
// O número 5 é 5
Visite a página da documentação oficial para aprender mais sobre a função array_merge().
Função array_unique()
: remove elementos repetidos do array
$numeros = [0, 2, 2, 4, 6, 4];
$numeros_sem_repeticao = array_unique($numeros);
foreach ($numeros as $i => $numero) {
echo "O número $i é $numero.";
}
// O número 0 é 0
// O número 1 é 2
// O número 2 é 4
// O número 3 é 6
Visite a página da documentação oficial para aprender mais sobre a função array_unique().
Função array_fill()
: cria array com tamanho e conteúdo definidos
$quatro_zeros = array_fill(0, 4, 0);
foreach ($quatro_zeros as $i => $valor) {
echo "O número $i é $valor.";
}
// O número 0 é 0
// O número 1 é 0
// O número 2 é 0
// O número 3 é 0
Visite a página da documentação oficial para aprender mais sobre a função array_fill().
Função array_sum()
: soma todos elementos de um array
$numeros = [0, 1, 2, 3, 4];
$soma = array_sum($numeros);
echo "A soma dos 5 primeiros números é $soma.";
// A soma dos 5 primeiros números é 10
Visite a página da documentação oficial para aprender mais sobre a função array_sum().
Função array_map()
: aplica uma função a cada elemento do array e retorna um novo array
function dobrar_numero(int $x): int
{
return $x * 2;
}
$numeros = [0, 1, 2, 3, 4];
$dobro = array_map('dobrar_numero', $numeros);
for ($i = 0; $i < count($numeros); $i++ ) {
echo "O dobro de $numeros[$i] é $dobro[$i].";
}
// O dobro de 0 é 0
// O dobro de 1 é 2
// O dobro de 2 é 4
// O dobro de 3 é 6
// O dobro de 4 é 8
Visite a página da documentação oficial para aprender mais sobre a função array_map().
Função array_filter()
: remove elementos de um array de acordo com um critério
function numero_eh_par(int $x): bool
{
return $x % 2 == 0;
}
$numeros = [0, 1, 2, 3, 4];
$pares = array_filter($numeros, 'numero_eh_par');
foreach ($pares as $i => $numero) {
echo "O número par $i é $numero.";
}
// O número par 0 é 0
// O número par 1 é 2
// O número par 2 é 4
Visite a página da documentação oficial para aprender mais sobre a função array_filter().
Como trabalhar com JSON e arrays no PHP?
Podemos transformar arrays de índice numérico ou associativos para transformar uma variável em JSON utilizando a função json_encode(), e podemos também transformar uma string JSON em array utilizando a função json_decode().
$json = '{"site": "https://codamos.com.br", "nota": 10.0}';
$avaliacao = json_decode($json);
echo "O site $avaliacao['site'] é nota $avaliacao['nota']!";
// O site https://codamos.com.br é nota 10.0!
$avaliacao['fonte'] = 'Eu mesmo';
$novo_json = json_encode($avaliacao);
echo $novo_json;
// {"site": "https://codamos.com.br", "nota": 10.0, "fonte": "Eu mesmo"}
Isto é muito útil para trabalhar com APIs rest ou mesmo para ler e escrever configurações em arquivos.
Conclusão
Arrays são um dos principais elementos que tornam a linguagem PHP tão poderosa e este artigo, por maior que pareça ser grande e extensivo, apenas toca na superfície do tópico.
Assim que dominar os tópicos apresentados aqui eu recomendo que você leia mais sobre Iterators e, por conseguinte, classes do tipo Iterator como o ArrayObject, SplStack e classes iteradores especiais da linguagem. A partir daqui você também deverá ter um arcabouço maior para entender como funcionam as Collections do Laravel.
Não esquece de compartilhar este artigo com amigos e colegas de curso ou de trabalho, isto ajuda bastante o blog a crescer e produzir mais conteúdo de qualidade pra quem é dev!
Num futuro próximo eu devo escrever também sobre como arrays se comportam em memória e como otimizar a utilização de memória quando trabalhamos com listas.
Até a próxima 👋
Comentários