Vamos imaginar uma situação: você desenvolveu um sistema que calcula médias escolares. Nesse sistema, você precisará guardar as notas de estudantes, sendo que sua quantidade pode variar. Nesse caso, dá para armazenar as notas em variáveis comuns, mas seriam muitas variáveis declaradas no mesmo sistema, concorda? O mais indicado para o armazenamento desses valores seria em listas, dentro do que é chamado PHP array.
Nesse caso, há muitas formas de se manipular um array e, isso pode deixar pessoas programadoras iniciantes com dificuldade em entender a complexidade das funções e do significado de array. Não é necessário memorizar todas as funções, pois, com o tempo e a utilização delas ao decorrer de sua jornada, você pegará o jeito de como cada uma funciona.
Ao utilizar um array, você estará simplificando a declaração de dezenas de variáveis, economizando o uso de memória do servidor de sua aplicação. Os arrays são estruturas presentes em basicamente todas as linguagens de programação. Vamos explorar os arrays mais a fundo? Vamos lá!
- O que é PHP Array?
- Qual a sintaxe?
- O que é um array?
- O que é iteração?
- Quais os tipos de array?
- Como funcionam as chaves de um array?
- Como criar/declarar um Array no PHP?
- Como acessar itens de um Array no PHP?
- Como percorrer os itens de um array no PHP?
- Ordenando os elementos de um Array no PHP
- Adicionando ou removendo valores em um array no PHP
- Adicionando valores a um array dinamicamente
- Combinando arrays
- Como filtrar os elementos de um array PHP?
- Contando itens em um array
- Iterando arrays em PHP
O que é PHP Array?
No PHP, um array seria um conjunto de dados estruturados. Nesse conjunto, para cada valor existente no array, existe uma chave para aquele valor. Essa estrutura é a base que poderá ser utilizada para outras mais complexas, como filas, pilhas, listas, etc.
Um exemplo de associação desse conjunto de dados seria entre uma camiseta e uma etiqueta. Todas as camisetas têm uma etiqueta única, concorda? Elas determinam o tamanho da camiseta e as instruções de lavagem da peça. Nesse caso, com arrays, ficaria similar ao seguinte:
Etiqueta (chave) | Camiseta (valor) |
123 | Camiseta 1 |
441 | Camiseta 2 |
921 | Camiseta 3 |
No exemplo acima, a chave do array seria a numeração das etiquetas e, os valores dele seriam a camiseta pertence a cada etiqueta. Não se preocupe se esse exemplo não tenha ficado evidente a você, pois serão exibidos mais alguns adiante.
Qual a sintaxe?
A sintaxe de um php array funciona da seguinte forma:
array (
primeira_chave => primeiro_valor,
segunda_chave => segundo_valor,
terceira_chave => terceiro_valor,
...
);
Para cada dado existente no array, há nele um par de chave e valor, que identificam o elemento presente no array. Por exemplo, utilizando o esquema das camisetas, ficaria algo similar a isso:
array (
123 => Camiseta 1,
441 => Camiseta 2,
921 => Camiseta 3
);
Alguns detalhes sobre o php array:
- Os valores dentro do array são separados por vírgula (,);
- No último elemento, como não há outro depois dele, o uso da vírgula é opcional;
- O par de chave e valor é separado por setas (=>).
O que é um array?
Um array é uma variável que pode armazenar mais de um valor nela. Ou seja, ao invés de declararmos, por exemplo, uma variável para cada nota de aluno, conforme o exemplo inicial, armazenamos todas as notas existentes em um array, para podermos manipular as notas de uma forma simples.
Muitas vezes, os arrays precisam de laços de repetição para satisfazerem a lógica do problema em questão. Isso envolverá o conceito de iteração, que será explicado no tópico a seguir.
O que é iteração?
Iteração significa o processo de repetição de ações, sendo elas uma ou mais ações. Por exemplo, para fazer a soma dos números de 1 a 5, de um em um, você faz o seguinte:
- Iniciamos com 1;
- Somamos +1;
- Temos como resultado 2;
- Somamos +1;
- Temos como resultado 3 e, assim por diante.
Essas linhas de soma (+1) dos números e o cálculo do resultado da soma seria uma iteração ou repetição em programação. No próximo tópico, veremos alguns tipos de arrays existentes.
Quais os tipos de array?
Abaixo, uma breve explicação de três tipos de arrays existentes no mundo da programação:
Arrays associativos
São arrays que têm chaves nomeadas. Para esse tipo, o array tem chave e valor para ser declarado e o valor da chave sempre virá entre aspas duplas (“”), nesse caso.
<?php
$pessoas = array(
"Fulano" => "33",
"Beltrano" => "22",
"Doisberto" => "31"
);
?>
Arrays numéricos
São arrays que têm um índice numérico dentro dele. Esse tipo de array utiliza a palavra-chave array(), para a declaração dessa estrutura.
<?php
$numeros = array(-6, -7, -8, 9, 10, 11, 12);
?>
Arrays multidimensionais
Para esse caso, são arrays que têm um ou mais arrays dentro dele. Arrays multidimensionais também são chamados matrizes. No exemplo a seguir, temos alguns animais com características de seu reino e a quantidade de patas que eles têm.
<?php
$animal = array(
"macaco" => array (
"classe" => "mamiferos",
"patas" => 4,
),
"jacare" => array (
"classe" => "repteis",
"patas" => 4,
),
"besouro" => array (
"classe" => "insetos",
"patas" => 6,
),
);
Como funcionam as chaves de um array?
No PHP, as chaves de um array iniciam na posição 0 e não na posição 1. Isso é muito importante, pois, caso você declare um array e ele comece na posição 1, está incorreto e problemas sérios podem ocorrer em sua aplicação.
“Entendi toda a teoria passada até aqui! Mas, como eu declaro um array no código?”
Esse será o assunto da próxima seção.
Como criar/declarar um Array no PHP?
No PHP, os arrays são criados com parênteses () ou colchetes []. Para declarar uma variável no PHP, é utilizado o cifrão ($). As variáveis são criadas sem espaços e caracteres especiais, como acentos. Vejamos os exemplos a seguir.
<?php
$materias = ("Física", "Biologia", "Inglês");
?>
<?php
$materias = ["Física", "Biologia", "Inglês"];
?>
Ambos os casos estão corretos, tanto parênteses quanto colchetes, e funcionarão da mesma forma no PHP. Há ainda uma forma de declarar arrays, conforme visto anteriormente, atribuindo chaves e valores a ele, conforme o exemplo a seguir:
<?php
array = (
"Linguagem" => "PHP",
"Linguagem" => "Ruby",
"Linguagem" => "Java"
);
?>
No caso, a chave linguagem recebe os valores: PHP, Ruby e Java.
Como acessar itens de um Array no PHP?
Vamos imaginar que desejamos imprimir na tela a palavra elefante, no array de animais a seguir:
<?php
$animais = ["Cachorro", "Elefante", "Leão", "Girafa"];
?>
Antes de tudo, em que posição a palavra elefante se encontra no array acima?
“Já sei! Na posição 2.”
Errado. Como visto anteriormente, ele está na posição 1, pois o array inicia no número 0.
“Então, nesse caso, a palavra cachorro seria a posição 0?”
Correto!
Para imprimir a palavra elefante na tela, fazemos o seguinte método:
<?php
$animais = ["Cachorro", "Elefante", "Leão", "Girafa"];
echo $animais[1];
?>
A palavra echo, no PHP, é uma palavra reservada para imprimir textos na tela. Para imprimir o texto desejado, passamos o array declarado ($animais, no caso) e a posição que desejamos imprimir (que seria a posição 1, no caso). Essa posição deverá vir entre colchetes ([1], por exemplo), por estarmos referenciando um array.
O resultado dele será a palavra “elefante” exibida na tela:
Vamos para mais um exemplo, para fixação. Desejo imprimir a palavra abobrinha, no array a seguir:
https://gist.github.com/Lucbm99/d63f201a042c102f47ad2e1751f16261
Como faço isso mesmo?
“Já sei! Se minhas contas não estiverem erradas, você fará um echo
na posição 3 do array, não é?”
Correto! O código ficará o seguinte:
https://gist.github.com/Lucbm99/15f2cc0764ae3f3d543d51f8ab8d2618
E o resultado na tela será o seguinte:
Agora que aprendemos como acessamos valores em um array, vamos ver mais operações para se fazer com eles.
Como percorrer os itens de um array no PHP?
Para o entendimento desse conceito, utilizaremos uma estrutura especializada em percorrer itens de um array php, que é a estrutura foreach.
A sintaxe do foreach, no PHP, funciona da seguinte maneira:
foreach ($array_qualquer as $value) {
//lógica para resolver o problema
}
Sendo o array que você criou que, deverá ser passado como parâmetro. No código HTML, a seguir, vemos um exemplo de como percorrer um array utilizando foreach:
<!DOCTYPE html>
<html>
<body>
<?php
$doces = array("Cajuzinho", "Cocada", "Goiabada");
foreach ($doces as $value) {
echo "$value <br>";
}
?>
</body>
</html>
Assim, para cada iteração que houver no laço de repetição foreach, a variável $value receberá o valor do elemento atual do array, quando ele for percorrido, até atingir seu último valor.
A impressão dos valores na tela ficará da seguinte forma:
Ordenando os elementos de um Array no PHP
- Caso 1: Ordenando elementos de forma crescente
Utilizamos a função sort para deixar os elementos de um array em ordem alfabética, passando o array criado como parâmetro dessa função, conforme o exemplo a seguir:
<?php
$produtos = ["Molho de tomate", "Feijão", "Mandioca", "Abobrinha"];
sort($produtos);
print_r($produtos);
?>
No exemplo acima, foi utilizada a estrutura print_r que, no PHP, imprime os arrays de uma forma visualmente melhor na tela. O resultado do código acima será o array ordenado alfabeticamente, conforme foto a seguir:
- Caso 2: Ordenando elementos de forma decrescente
Para ordenar o array em forma decrescente, aplicamos o mesmo princípio da ordenação anterior, mas utilizando a função rsort, que faz o inverso da função sort, conforme o código a seguir:
<?php
$produtos = ["Molho de tomate", "Feijão", "Mandioca", "Abobrinha"];
rsort($produtos);
print_r($produtos);
?>
O resultado será o seguinte:
Também haverão casos que o array pode ter chave e valor e, podemos ordenar eles de forma crescente e descrente.
- Caso 3: Ordenando elemento pelos valores de forma crescente
Para ordenar pelos valores em formato crescente, utilizamos a função asort, conforme o exemplo a seguir:
<?php
$pessoas = array(
"Fulano" => "33",
"Beltrano" => "22",
"Doisberto" => "31"
);
asort($pessoas);
print_r($pessoas);
?>
O resultado será o seguinte:
Nesse caso, os valores foram exibidos em ordem crescente, que seriam números, no caso.
- Caso 4: Ordenando elemento pelos valores de forma decrescente
Para isso, utilizaremos uma função que faz o contrário feito pela asort, que seria a arsort. Vejamos o exemplo a seguir:
<?php
$pessoas = array(
"Fulano" => "33",
"Beltrano" => "22",
"Doisberto" => "31"
);
arsort($pessoas);
print_r($pessoas);
?>
O resultado será o seguinte:
Nesse caso, os valores foram exibidos em ordem decrescente. Vamos ver como ordenar pelas chaves agora.
- Caso 5: Ordenando elementos pelas chaves de forma crescente
No exemplo a seguir, utilizamos a função ksort para ordenar os valores em forma crescente, pela chave:
<?php
$pessoas = array(
"Fulano" => "33",
"Beltrano" => "22",
"Doisberto" => "31"
);
ksort($pessoas);
print_r($pessoas);
?>
O resultado será o seguinte:
Nesse caso, os valores foram exibidos em ordem crescente, pela chave.
- Caso 6: Ordenando elementos pelas chaves de forma decrescente
Para isso, utilizaremos uma função que faz o contrário feito pela ksort, que seria a krsort. Vejamos o exemplo a seguir:
<?php
$pessoas = array(
"Fulano" => "33",
"Beltrano" => "22",
"Doisberto" => "31"
);
krsort($pessoas);
print_r($pessoas);
?>
O resultado será o seguinte:
Nesse caso, os valores foram exibidos em ordem decrescente, pela chave.
Adicionando ou removendo valores em um array no PHP
- Caso 1: Adição de elementos no início de um array
Para adicionar um elemento no início de um array, utilizamos a função array_unshift, passando como parâmetro nela o vetor criado e o valor que desejamos inserir no array. Vejamos o exemplo a seguir:
<?php
$estados_centro_oeste = ["GO", "MS", "DF"];
array_unshift($estados_centro_oeste, "MT");
print_r($estados_centro_oeste);
?>
Foi criado um array sem o estado do Mato Grosso nos estados da região Centro Oeste. Mas, ele foi adicionado no início do array com o array_unshift, conforme o resultado a seguir:
- Caso 2: Adição de elementos no final de um array
Para adicionar um elemento no final de um array, utilizamos a função array_push, passando como parâmetro nela o vetor criado e o valor que desejamos inserir no array. Vejamos o exemplo a seguir:
<?php
$estados_norte = ["AM", "AP", "RO", "AC"];
array_unshift($estados_norte, "RR", "PA", "TO");
print_r($estados_norte);
?>
Foi criado um array sem os estados do Pará, Tocantins e Roraima nos estados da região Norte. Mas, eles foram adicionados ao final do array com o array_push, conforme o resultado a seguir:
- Caso 3: Remoção do primeiro elemento de um array
Para remover o primeiro elemento de um array, utilizamos a função array_shift, passando o array criado como parâmetro. Vejamos o exemplo a seguir:
<?php
$doces = array('Cajuzinho', 'Cocada', 'Pipoca Doce', 'Goiabada');
array_shift($doces);
print_r($doces);
?>
Nesse exemplo, o doce cajuzinho foi retirado desse array, conforme o resultado a seguir:
- Caso 4: Remoção do último elemento de um array
Para remover o último elemento de um array, utilizamos a função array_pop, passando o array criado como parâmetro. Vejamos o exemplo a seguir:
<?php
$doces = array('Cajuzinho', 'Cocada', 'Pipoca Doce', 'Goiabada');
array_pop($doces);
print_r($doces);
?>
Nesse exemplo, o doce goiabada foi retirado desse array, conforme o resultado a seguir:
Adicionando valores a um array dinamicamente
Para fazer a adição de valores de forma dinâmica em um array, você precisará declarar a variável do array novamente, junto de um colchete vazio ([]), informando os valores a serem adicionados de forma automática ao final do array. Vamos verificar o exemplo abaixo:
<?php
$doces = array('Cajuzinho', 'Cocada', 'Pipoca Doce', 'Goiabada');
$doces[] = 'Brigadeiro';
$doces[] = 'Pastel de Belém';
print_r($doces);
?>
No caso, foi adicionado os valores brigadeiro e pastel de Belém no array de doces, conforme o resultado abaixo:
Combinando arrays
Para isso, podemos juntar dois arrays que tenham diferentes elementos utilizando a função array_merge, conforme o exemplo a seguir:
<?php
$estados_sul = ["RS", "SC", "PR"];
$estados_sudeste = ["SP", "ES", "MG", "RJ"];
$estados = array_merge($estados_sul, $estados_sudeste);
print_r($estados);
?>
No caso acima, foi feita a junção de dois arrays de estados, passando uma variável $estados, que continha o array_merge. O resultado foi o seguinte:
Como filtrar os elementos de um array PHP?
Para você realizar o filtro de elementos no PHP, você precisará passar uma função como parâmetro para isso. Essa função se chama função callback.
Nesse caso, vamos criar um array, conforme o exemplo abaixo, e capturaremos apenas os números positivos nele:
<?php
function positivos($var)
{
return($var > 0);
}
$numeros = array(-6, -7, -8, 9, 10, 11, 12);
print_r(array_filter($numeros, "positivos"));
?>
A função positivos tem a variável $var como parâmetro e ela retornará somente os números que forem maiores que 0, no array $numeros. Ao dar um print_r na função, o array_filter terá como parâmetros:
- O array $numeros criado;
- A função positivos, passada entre aspas.
O resultado trará apenas os números positivos, conforme foto a seguir:
Contando itens de um array
A contagem de itens existentes em um array é feito através da função count, passando o array criado como parâmetro.
Vamos verificar o exemplo a seguir:
<?php
$doces = array('Cajuzinho', 'Cocada', 'Pipoca Doce', 'Goiabada');
echo count($doces);
?>
No caso, será impressa apenas o número da quantidade de itens que o array $doces possui, que, no caso, será igual a quatro:
Iterando arrays em PHP
Como já foi visto anteriormente, há a possibilidade de percorrer itens de um array utilizando o foreach. Contudo, há duas outras estruturas capazes de fazer isso em arrays, que seriam: for e while.
- For: é uma estrutura de repetição para arrays para percorrer os elementos de uma estrutura. A sua sintaxe segue a seguinte escrita, no PHP:
for (expressao1; expressao2; expressao3) {
// condições
}
No caso, vamos verificar um exemplo de código que imprime os elementos de 1 a 10 na tela:
<?php
for($x=1; $x <= 10; $x++){
echo $x . "\n";
}
?>
O resultado do código será o seguinte:
No caso, entre os parênteses, foi declarada a variável $x, começando no 0, para a primeira expressão. Já para a segunda expressão, foi passado para ela ir até um número igual ou menor que 10. E, por fim, o significado de $x++ é para essa variável ser incrementada, pois essa expressão é igual a $x = $x + 1.
Em resumo:
- Primeira expressão do for é a indicação de qual número a variável começa;
- Segunda expressão do for é a indicação de até qual número essa variável deve ir;
- Terceira expressão seria o incremento ou o decremento da variável.
Vejamos agora o seguinte exemplo:
<?php
$animais = ["Gorila", "Panda", "Piraíba", "Rinoceronte"];
for($x=0; $x<count($animais); $x++){
echo $animais[$x] . "\n";
}
?>
Nele, foi declarado um array de animais que contém quatro posições. Foi feita a declaração do início da variável, começando em 0. Na segunda expressão, a variável $x será percorrida até o tamanho do array (função count → e o tamanho do array é igual a 4). Por fim, é feito o incremento da variável e o resultado será o seguinte:
Foi feita a impressão de todos os animais do array na tela.
- While: seu propósito de funcionamento é igual ao do laço for, mas sua sintaxe é um pouco diferente.
Sua sintaxe será a seguinte:
while (expressao) {
lógica do problema
}
Vamos transformar o exemplo anterior dos animais em While, para você verificar a diferença:
<?php
$animais = ["Gorila", "Panda", "Piraíba", "Rinoceronte"];
$x = 0;
while($x<count($animais)){
echo $animais[$x] . "\n";
$x++;
}
?>
O resultado do código acima é o mesmo do for:
No while, o início da variável $x é declarado fora do bloco de chaves e a condição de até onde a variável percorrerá vai nos parênteses. O incremento ou decremento da função ficará no bloco de chaves, após os valores serem impressos.
Uma observação importante: o incremento ou decremento, em um loop while, não pode jamais ser esquecido, pois seu código entrará em um loop infinito e você não conseguirá parar ele sem ser pelo código.
Em uma questão de performance de sua aplicação, o uso do laço de repetição for é melhor se for comparado com o uso do laço while.
Esse assunto sobre o php array é interessante, não é? Temos certeza que ele abre infinitas possibilidades em sua mente para você brincar com os arrays em seus estudos. Eles são variáveis que podem armazenar vários valores e, sempre iniciarão na posição 0, nunca na posição 1.
Além disso, foram vistas operações para juntar, adicionar, remover e ordenar arrays que são importantes para seu conhecimento, pois elas serão utilizadas em algum momento no seu dia a dia. A nomenclatura dessas operações pode diferir em outras linguagens de programação, mas o conceito delas é sempre igual.
Confira mais sobre PHP com nosso artigo sobre PHP Date!