PHP: Manipulando coleções com Arrays | Alura Cursos Online
Primeiras aulas do curso PHP: Manipulando coleções com Arrays
PHP: Manipulando coleções com Arrays
Criando array de notas - Introdução
Boas-vindas ao curso de Arrays no PHP.
Na primeira aula do nosso curso, aprenderemos a criar um array de notas. Criaremos um método para calcular a média das notas desse array.
Depois, veremos um array de saldos. Entenderemos como iterar sobre esse array, ordená-lo e exibir o menor saldo.
Saberemos como transformar uma string para um array e o processo inverso, um array para uma string.
Lidaremos com um array com vários tipos diferentes, como strings e inteiros, e criaremos uma função de remover um elemento desse array. Com isso abordaremos várias peculiaridades do PHP, como a tipagem estrita.
Depois, construiremos um autoloader, para não precisarmos usar require quando precisarmos de uma classe.
Também veremos funcionalidades como os namespaces.
Na última aula, abordaremos os arrays associativos, e veremos como iterar sobre eles, adicionar e remover um elemento.
Nos veremos no curso.
Criando array de notas - Calculando a media
Meu nome é Giovanni e serei o instrutor nesse curso de Arrays.
Nessa aula, precisaremos criar um programa que vai calcular médias para nossas notas de matérias escolares. Usaremos o Visual Studio Code como editor, mas outros editores também podem ser usados à vontade.
Para criar uma pasta para nosso projeto, clicaremos em "File" na barra de ferramentas e na opção "Open Folder". Uma janela se abrirá e no destino desejado no computador, no nosso caso, a pasta "Curso Arrays", criaremos a pasta "Projeto" e a selecionaremos.
Dentro dela, no Visual Studio Code, criaremos um arquivo que se chamará "index.php". Já teremos, então, um arquivo PHP para trabalhar. Nele armazenaremos nossa primeira nota. Digitaremos $notaPortugues = 9; para isso. 9 é a nota que teremos tirado. Assim, teremos armazenado nossa nota.
Faremos o mesmo para a nota de matemática. Criaremos uma variável e teremos a nota 3 $notaMatematica = 3;. E para as demais:
$notaGeografia = 10;
$notaHistoria = 5;
Então, tendo armazenado nossas notas, executaremos o arquivo. No Windows, abriremos nossa pasta "Projeto" e o Power Shell. Caso esteja usando Mac ou Linux, nas instruções da aula "Preparando o Ambiente" haverá todas as instruções de como abrir o servidor PHP em cada sistema. Com o Power Shell aberto, depois de "projeto>", digitaremos o comando php-s 0.0.0.0:8000.
Agora, se abrirmos o navegador de internet, no nosso caso, o Chrome, e acessarmos o endereçolocalhost:8000, conseguiremos abrir nossa página. Mas ela estará em branco, pois ainda não mandamos nada para ser impresso na tela. Até agora, apenas armazenamos os números nas variáveis. Faremos essa impressão.
Para isso, utilizaremos a função echo e acrescentaremos o texto. Depois concatenaremos essa variável:
echo "a nota de português é" . $notaPortugues;
Agora, se recarregarmos a página do navegador, aparecerá o texto "a nota de português é9".
No entanto, o tipo de concatenação que usamos pode dificultar o processo, pois teremos sempre que adicionar um ponto quando formos usar uma variável. Também podemos utilizar a interpolação. Apagaremos as aspas no meio, bastando fechá-las no fim da frase. A variável ficará no meio do texto, assim:
echo "a nota de português é: $notaPortugues";
Adicionaremos 2 pontos antes da nota. Então, vamos recarregar a página da web e a frase ficará "a nota de português é: 9".
Faremos o mesmo para as outras notas. Copiaremos o texto da nota de português, fazendo a alteração para as demais disciplinas.
echo "a nota de português é:  $notaPortugues";
echo "a nota de matemática é:  $notaMatematica";
echo "a nota de geografia é:  $notaGeografia";
echo "a nota de história é:  $notaHistoria";
Agora, precisaremos fazer o cálculo da média para que ela seja exibida. Somaremos todas as notas e dividiremos pela quantidade de notas que temos. Escreveremos, então:
$media = ($notaPortugues + $notaMatematica + $notaGeografia + $notaHistoria) / 4;
Exibiremos a média por meio da função echo:
echo "A média é: $media";
Mais uma vez recarregaremos a página no navegador e serão exibidas tanto as notas das outras disciplinas quanto a média. Porém, o texto estará todo colado, sem pular linhas.
Isso acontece porque quando imprimimos um texto no navegador estamos lidando com html, que se trata de um texto entre tags. Precisaremos colocar no começo do texto a tag <p> e fechá-la ao final (</p>) adicionando a barra (/). Assim, conseguiremos pular uma linha entre parágrafos.
echo "<p>a nota de português é:  $notaPortugues</p>";
echo "<p>a nota de matemática é:  $notaMatematica</p>";
echo "<p>a nota de geografia é:  $notaGeografia</p>";
echo "<p>a nota de história é:  $notaHistoria</p>";
Recarregaremos a página novamente e o texto estará formatado do modo adequado.
a nota de português é: 9
a nota de matemática é: 3
a nota de geografia é: 10
a nota de história é: 5
A média é 6.75
Mas há um problema: esquecemos de colocar a nota de química. Então vamos criar uma nova variável para ela e o texto para imprimi-la na tela. Também teremos que adicioná-la à média e incrementar o número de notas, já que agora contamos com mais uma.
$notaQuimica = 10;
echo "<p>a nota de química é: $notaQuimica</p>";
$media = ($notaPortugues + $notaMatematica + $notaGeografia + $notaHistoria + $notaQuimica) / 5;
Agora, se recarregarmos a página, a nota de química terá sido adicionada e a média ficará maior (7,4).
Criando array de notas - Fazendo a soma iterando sobre o array
Já calculamos a média e vimos que quando foi necessário adicionar uma nova nota, esse foi um processo demorado e até propenso a erros.
Podemos facilitá-lo utilizando arrays. Trocaremos todas essas notas por um array de notas.
Iniciaremos um array através da função com o mesmo nome e guardaremos uma coleção de elementos nele. No caso, as nossas notas, que serão adicionadas conforme a ordem que já estavam, e ele guardará essa coleção de números.
$notas = array(9, 3, 10, 5, 10);
Também podemos declarar um array de forma mais compacta, por exemplo, utilizando os colchetes em vez da função array().
$notas = [9, 3, 10, 5, 10];
Para imprimir a primeira nota, de Português, escreveremos:
echo "<p>a nota de português: $notas</p>";
No entanto, atualizaremos a página no Chrome e será mostrado "a nota de português é: Array". As demais notas não aparecerão.
Isso acontece porque precisamos acessar a primeira posição do array para que seja impresso o primeiro número. Teremos que colocá-la entre colchetes, da seguinte forma:
echo "<p>a nota de português: $notas[0]</p>";
Esse procedimento será necessário porque quando temos uma variável, ela terá seu nome e valor, e eles estarão na memória do computador.
Nossa variável $nota tem nota como nome e armazena o valor 9. Quando temos um array, como o $notas, ele terá mais de um número em seu interior, com diferentes posições. Em um array de notas, por exemplo: $notas = array(7, 5, 9), a nota 7 estará armazenada na posição 0, a nota 5 na posição 1 e a nota 9, na 2. Todos os números, porém, podem ser identificados como "notas".
Então, quando chamamos a nota de português apenas de $notas com echo "<p>a nota de português: $notas</p>";, será mostrado para nós apenas o texto "Array", porque estaremos acessando o array inteiro.
Por isso colocaremos o 0 entre colchetes no código, já que o array começa a contagem a partir desse número. Se quisermos acessar a segunda posição, deveremos colocar o 1 entre colchetes:
echo "<p>a nota de matemática: $notas[1]</p>";
E assim faremos para as demais posições, lembrando que esse é um array de 5 posições, de 0 a 4:
echo "<p>a nota de geografia: $notas[2]</p>";
echo "<p>a nota de história: $notas[3]</p>";
echo "<p>a nota de química: $notas[4]</p>";
Mais uma vez recarregaremos a página do navegador e já aparecerão de novo as nossas notas corretamente. Contudo, a média ainda estará como 0, porque ainda estaremos utilizando as variáveis antigas.
Então faremos o mesmo para a média.
$media = ($notas[0] + $notas[1] + $notas[2] + $notas[3] + $notas[4]) / 5;
Com isso, nossa média voltará a ser calculada, e com o uso de arrays.
Mas até agora, o uso de array não terá realmente facilitado nosso trabalho. Poderemos começar a utilizar uma função que opera sobre o array chamada sizeof(). Ela nos retornará o número de elementos que tem um array, e armazenaremos isso numa variável nomeada $tamanhoArray = sizeof();
Essa variável será referente ao tamanho de $notas. E vamos alterar o nome dela para representar melhor o que queremos, portanto, $quantidadeNotas = sizeof($notas);.
Isso nos retornará um número inteiro. Na função sizeof(), o parâmetro de retorno será um "int". Então, podemos substituir o número 5 no código para calcular a média das notas pela variável $quantidadeNotas.
$media = ($notas[0] + $notas[1] + $notas[2] + $notas[3] + $notas[4]) / $quantidadeNotas;
Agora, se formos no navegador e atualizarmos a página, o comportamento ainda será o mesmo, e será apresentada a média correta.
Ainda teremos nossas variáveis de notas passadas de uma maneira bastante manual, especificando as posições de 0 a 4. Caso precisemos adicionar mais uma, teremos que escrever tudo de novo, assim como fizemos na aula anterior. Para facilitar, podemos utilizar um loop. Vamos usar o for para poder iterar sobre esse array e guardar toda a soma.
Criaremos uma variável com o nome de $soma. O contador ($i) se iniciará a partir do 0. Ocorrerão, então, as iterações do array, ou seja, cada item do array será lido pelo código e entrará para a soma, até acabarem os registros da variável $quantidadeNotas.
Será feita uma iteração de cada vez devido ao "++" no código. Quando esse processo acabar, passaremos para a variável $somatudo o que já existe nela e mais nosso array $notascom a posição do nosso contador. Assim, estaremos armazenando em $soma todos os elementos do array.
for ($i = 0; $i < $quantidadeNotas; $i++) {
$soma = $soma + $notas[$i];
Agora, poderemos substituir nossas notas pela variável $soma.
$media = $soma/ $quantidadeNotas);
Veremos no navegador como terá ficado. Atualizando a página aparecerão todas as nossas notas e a média correta.
Com isso, fica mais fácil adicionar mais uma nota. Podemos, por exemplo, adicionar uma nota 8 ao nosso array.
$notas = array(9, 3, 10, 5, 10, 8);
Será nossa nota de artes:
echo "<p>a nota de artes: $notas[5]</p>";
Bastará esse procedimento e já será feita a soma e a média pegará toda essa soma com a quantidade de notas. Será tudo impresso para nós quando recarregarmos nossa página no carregador.
Sobre o curso PHP: Manipulando coleções com Arrays
O curso PHP: Manipulando coleções com Arrays possui 89 minutos de vídeos, em um total de 40 atividades. Gostou? Conheça nossos outros cursos de PHP em Programação, ou leia nossos artigos de Programação.