PHP array: armazenando vários valores em uma variável!

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?

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)
123Camiseta 1
441Camiseta 2
921Camiseta 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: 

Resultado do código PHP array

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: 

Resultado do código

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: 

Resultado print PHP array
  • 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: 

Resultado rsort

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: 

Resultado asort

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:

resultado arsort PHP array

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: 

resultado ksort

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: 

PHP array krsort

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: 

Resultado adição início da array
  • 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: 

PHP array adicionando elementos no final
  • 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:

removendo elemento da array
  • 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:

Removendo último elemento da array

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: 

Adicionando valores no final php array

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

Junção de dois arrays

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:

Filtrando php arrays

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: 

Resultado contagem elementos php array

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: 

Resultado do código PHP array

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:

Resultado php for

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: 

Resultado código while php array

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!