Curso de PHP: #10 - Trabalhando com Arrays

Curso de PHP: #10 - Trabalhando com Arrays

Fala a verdade pequeno escoteiro, tá bem legal, não tá? No post anterior aprendemos como obter dados dos nossos usuários e ainda aprendemos a trabalhar com concatenação de strings, porém String como eu já comentei, é um assunto bem amplo e ainda aprofundaremos muito mais nela ainda nesse curso. No momento precisamos falar de outro assunto muito importante e que com certeza será um dos recursos que você mais vai usar em sua vida como programador PHP, os Arrays.

O que é um Array?

Array é "como se fosse" uma lista. Com os arrays podemos armazenar diversos itens em uma mesma variável, ou seja, podemos salvar:

  • Lista de nome de pessoas
  • Lista de produtos
  • Lista de números
  • etc...

Cada item dessa lista fica associado a um índice, e podemos acessar essa informação simplesmente informando para o Array o índice do item que queremos receber.

Vamos a um exemplo:

<?php

$numeros = [10, 12, 32, 9, -2, 0, 1];

echo $numeros[0];

No PHP existem várias formas de se criar um Array, mas para simplificar vamos pegar por enquanto a mais simples e mais popular que é usando colchetes.

Cada item do Array é separado por virgulas dentro dos Colchetes e se não informarmos explicitamente um índice, o PHP criará os índices com números inteiros começando sempre do 0 (zero), ou seja, no exemplo acima os índices ficariam assim:

  • 0 -> 10
  • 1 -> 12
  • 2 -> 32
  • 3 -> 9
  • 4 -> -2
  • 5 -> 0
  • 6 -> 1

Ao executarmos o código acima, será impresso no console o número 10, visto que é ele está na posição 0 ou seja, o índice dele é o 0.

Se quisermos imprimir o número -2 teríamos que acessar a posição 4

<?php

$numeros = [10, 12, 32, 9, -2, 0, 1];

echo $numeros[4];

Inserindo elemento em um Array

Novamente existem várias formas de se inserir um elemento em um Array, mas por hora vamos ver as principais.

Exemplo: inserindo itens sem definir o índice

<?php

$numeros = [];
$numeros[] = 55;

echo $numeros[0];

Vamos analisar linha a linha o código acima

  1. O PHP alocará um espaço em memória (Memória RAM) e associará esse espaço à variável $numeros
  2. Ainda na mesma linha será atribuído a esse espaço de memória, como seu valor, um Array Vazio, ou seja, sem itens.
  3. Na linha seguinte temos $numeros[] = 55; Ao atribuir um valor a uma posição indefinida de um Array, o PHP coloca esse item no final do Array, como nesse exemplo nosso Array não tem elemento algum, coincidentemente a última posição também será a primeira, logo, esse elemento será inserido na posição 0.
  4. Na última linha temos echo $numeros[0]; que se encarregará de imprimir o valor constante na posição 0 desse Array, ou seja, o valor 55.

Eu posso também inserir elementos em posições específicas, simplesmente informando o índice onde eu quero inserir.

<?php

$numeros = [57, 12, 23];

// Irá inserir na posição 10
$numeros[10] = 55;

// Irá inserir na posição 11
$numeros[] = 63;

print_r($numeros);

No exemplo acima, eu declarei uma variável chamara $numeros e atribui a ela um Array já com 3 elementos, ou seja, como não foram definidos os índices, esses números serão posicionados nos índices:

  • 0 -> 57
  • 1 -> 12
  • 2 -> 23

Na sequência eu disse que na posição 10 eu quero inserir o valor 55. Nesse momento o PHP irá pular os índices de 3 a 9 e criar uma posição 10, ficando assim:

  • 0 -> 57
  • 1 -> 12
  • 2 -> 23
  • 10 -> 55

Em seguida eu mandei o PHP inserir mais um item de valor 63 na próxima posição, que nesse caro seria a posição de índice 11.

E por fim usei a função print_r que ainda não tínhamos visto.

A função print_r consegue imprimir para nós um Array mostrando sua associação indice -> valor. O resultado será:

Array
(
    [0] => 57
    [1] => 12
    [2] => 23
    [10] => 55
    [11] => 63
)

Em outras linguagens de programação os Arrays suportam apenas elementos do mesmo tipo, no PHP você pode fazer uma salada de fruta da forma que quiser.

Exemplo com diferentes dados

<?php

$lista = ["Melancia", 57, 9.8, [1, 2]];

print_r($lista);

O resultado seria

Array
(
    [0] => Melancia
    [1] => 57
    [2] => 9.8
    [3] => Array
        (
            [0] => 1
            [1] => 2
        )

)

Ou seja, na posição 0 eu tenho uma String, na posição 1 eu tenho um número inteiro, na posição 2 eu tenho um Float (número decimal) e na posição 3 eu tenho outro Array com 2 itens.

E se eu quiser inserir vários itens ao mesmo tempo, porém cada um em uma posição específica?

<?php

$lista = [
    1 => "Melancia", 
    3 => "Cajú",
    8 => "Manga"
];

print_r($lista);

O resultado seria

Array
(
    [1] => Melancia
    [3] => Cajú
    [8] => Manga
)

Array assossiativo

Como vimos podemos inserir posições sem obedecer um sequência bem definida em nossos Arrays, e o PHP inclusive permite que você cadastre Strings como sendo Índices.

Vamos ver como isso funciona?

<?php

$cadastro = [
    "site" => "Acampamento Dev", 
    "curso" => "PHP",
    "aula" => "Curso de PHP: #10 - Trabalhando com Arrays"
];

echo $cadastro["site"];

Ao executar o programa acima o resultado no console será: Acampamento Dev

Ainda tem muito mais coisas legais sobre Arrays para vermos, mas por hora esse é o mínimo que você precisa saber para já começar com o pé direito. Em um momento mais oportuno aprofundaremos mais o nosso conhecimento em Arrays.

Desafio

Complete o código abaixo para criar um programa que:

  1. Solicite do usuário suas 3 notas da escola.
  2. Associe essas notas às posição 0, 1 e 2 do array $notas.
  3. Verifique se a média é maior ou igual a 7, se sim, imprima APROVADO, senão imprima REPROVADO.
<?php

$notas = [];

// ...

$media = ($notas[0] + $notas[1] + $notas[3]) / 3;

Até a próxima, escoteiro!!!