Última atualização:
Guia definitivo: arrays em PHP

Guia definitivo de arrays no PHP

Nawarian
Nawarian 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:

ConceitoOutra linguagemPHP
VetorNa 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 pilhasEm 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árioA 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 arrayde í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 outro array: 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