PHP foreach: iterando arrays com esse operador!

No PHP, além do laço de repetição for, há outro tipo de laço de repetição que você vai se deparar em seus estudos, o PHP Foreach. O funcionamento dele será parecido com o for, pois ambos têm o mesmo conceito de que o desenvolvedor ou desenvolvedora definirá quantas vezes uma determinada lógica será executada. 

O laço foreach é um tipo de laço de repetição especial do PHP e, pessoas desenvolvedoras podem trabalhar com códigos legados que estejam com loops difíceis de entender, pelas suas variáveis, condições, dentre outros. Além disso, podem apresentar dificuldades em entender como é o funcionamento do foreach, caso sejam pessoas leigas em programação

Contudo, o entendimento do laço foreach é muito importante, pois uma vez entendido em uma linguagem, você basicamente entenderá como funciona qualquer laço de repetição, em qualquer outra. Vamos explorar o php Foreach a fundo? Serão exibidos vários assuntos sobre ele. Venha com a gente!

O que é PHP Foreach?

O PHP foreach, assim como o laço for, é um laço de repetição. Eles trabalham com um grande número de dados e com objetos iteráveis, que seriam os vetores e as matrizes. Nesse caso, a iteração significa a repetição de uma ou mais ações que serão executadas conforme o programador ou programadora as declare em sua estrutura. 

Neste caso, a estrutura do foreach tem uma maneira simples de realizar iterações com vetores (arrays) e, ela só poderá ser utilizada em variáveis que sejam objetos ou arrays. Se, por um acaso, for utilizada uma variável com um tipo diferente de dado, será exibido um erro, justamente por esse tipo de dado não ser array ou objeto.

Vamos verificar como é a escrita desse tipo de estrutura? Esse será o assunto do próximo tópico. 

Qual a sintaxe?

Há duas formas de como escrever o PHP foreach na linguagem. Vamos à elas: 

  • Forma 1: 
foreach($array as $valor) {
//execução da lógica do problema
}
  • Forma 2: 
foreach($array as $chave => $valor) {
//execução da lógica do problema
}

Na forma 1 acima, há a iteração sobre arrays na variável $array. Quando houver iterações no código, o valor do elemento presente será atribuído para variável $valor. Feito isso, o array avançará uma posição para fazer a iteração com o elemento seguinte. 

Na forma 2, ela adiciona a variável $chave, para ser a chave do elemento atual a cada iteração que houver no código. 

Nesse caso, todo laço de repetição foreach terá o código em chaves ({}), para ser executado. Além disso, como você já deve estar craque em ver declarações de variáveis PHP, você já sabe que toda variável no PHP, inicia com o símbolo do cifrão ($), antes de ser declarada. 

Um exemplo de como utilizar a segunda forma seria quando você tem uma lista de produtos e nela, há um array que contém os produtos, como sendo a chave do array e o preço dele, que seria o valor.

A sintaxe do código desse exemplo ficaria dessa forma: 

<?php 

$produtos = [
    'Farinha de trigo' => 2.33,
    'Arroz' => 15,
    'Coxão mole' => 20,
    'Ervilha' => 1.99
];

foreach ($produtos as $produto => $preco) {
//condições a serem executadas
}

Não se preocupe, pois mais exemplos práticos com códigos serão exibidos ao decorrer do texto. 

O que é um laço de repetição?

Um laço de repetição repete um bloco de código (instruções) até uma condição declarada pela pessoa desenvolvedora ser atendida. Esse tipo de estrutura está presente na maioria das linguagens de programação do mercado, como Python, Java, C#, JavaScript, dentre outras. 

Um exemplo de sua eficiência seria quando você deseja a exibição dos números de 1 a 100 em seu computador. Já sei! Eu declaro 100 variáveis distintas e imprimo cada uma delas, com o echo. Não é? Não. Jamais devemos fazer isso. Utilizando o laço de repetição, você simplificará esse processo acima, reduzindo seu tamanho para três linhas.

Nas próximas seções, serão vistos alguns exemplos práticos com código do foreach. Vamos verificar eles. 

Utilizando o valor da chave com PHP foreach

  • Exemplo 1: Vamos utilizar o caso dos produtos mencionado anteriormente, mas agora, com um código para ser exibido na tela o produto e ao lado dele, seu respectivo valor: 
<?php 

$produtos = [
    'Farinha de trigo' => 2.33,
    'Arroz' => 15,
    'Coxão mole' => 20,
    'Ervilha' => 1.99
];

foreach ($produtos as $produto => $preco) {
    echo "O produto: ". $produto." custa R$".$preco.PHP_EOL;
}

No exemplo anterior, foi declarado um array $produtos, com alguns produtos presentes em nosso cotidiano. Para eles, com o auxílio de uma seta (=>), foi atribuído um valor, sendo a chave do array o nome do produto e o valor dele, o seu preço.

Dessa forma, foi feito um laço foreach para que, na variável $preco, seja adicionada a variável $produto para ser a chave do elemento atual a cada iteração que houver no código, até que as repetições do array sejam finalizadas. 

O resultado do código acima será a junção do nome do produto e do preço dele, exibido pela função echo do PHP, concatenando com as variáveis do foreach e, pulando linhas com a função PHP_EOL:

Resultado Exemplo 1 PHP foreach
  • Exemplo 2: Desejo fazer a mesma coisa juntando agora a chave do array sendo uma cidade do Brasil e o valor dele ser a sigla do estado que ela pertença. Perfeito! A lógica será quase igual a lógica do exemplo anterior: 
<?php 

$cidades = [
    'Lucas do Rio Verde' => 'MT',
    'São João Del Rey' => 'MG',
    'Passo Fundo' => 'RS',
    'Itajaí' => 'SC',
    'Londrina' => 'PR'
];

foreach ($cidades as $cidade => $estado) {
    echo "A cidade: ". $cidade." pertence ao estado: ".$estado.PHP_EOL;
}

No exemplo anterior, foi declarado um array $cidades, com algumas cidades brasileiras presentes nele. Para elas, foi atribuído um valor, que seria a sigla do estado que elas pertencem, sendo a chave do array o nome do município e o valor dele, o seu estado.

Dessa forma, foi feito um laço foreach para que, na variável $estado, seja adicionada a variável $cidade para ser a chave do elemento atual a cada iteração que houver no código, até que as repetições do array sejam finalizadas. 

O resultado do código acima será a junção do nome do município com a sigla do estado em que a cidade pertença:

Resultado Exemplo 2

PHP foreach com arrays indexados

  • Exemplo 3: Você quer percorrer um array que contenha algumas frutas de nosso cotidiano: 
<?php
$frutas = ['Amora', 'Ameixa', 'Morango', 'Maracujá'];

foreach ($frutas as $fruta) {
    echo $fruta . PHP_EOL;
}
?>

No exemplo acima, foi declarado um array $frutas, atribuindo os valores: Amora, Ameixa, Morango e Maracujá a ele. Depois disso, ao fazer um laço foreach, atribuímos a variável $frutas, que seria o array declarado para a variável $fruta, pois, quando houver iterações, o valor do elemento atual da iteração será atribuído para a variável $fruta. 

O resultado do código acima será a exibição dos valores dos arrays de frutas na tela: 

Resultado Exemplo 3 PHP foreach
  • Exemplo 4: Você quer percorrer um array que contenha o nome de alguns carros presentes em nosso cotidiano:
<?php
$carros = ['HB20', 'Fiesta', 'Mille', 'Fox'];

foreach ($carros as $carro) {
    echo $carro . PHP_EOL;
}
?>

A lógica será quase igual à do exemplo anterior, com as frutas. Para esse caso, foi declarado um array $carros, que contenha os valores: HB20, Fiesta, Mille e Fox. Depois disso, para cada iteração que houver no código, entre os itens dele, a variável $carro receberá o valor atual da iteração, até ela ser encerrada. 

O resultado do código acima será a exibição dos valores declarados no array $carros

Resultado Exemplo 4
  • Exemplo 5: Você quer percorrer um array que contenha nomes de linguagens de programação utilizadas atualmente:
<?php
$linguagens = ['Java', 'JavaScript', 'C#', 'PHP', 'Python'];

foreach ($linguagens as $linguagem) {
    echo $linguagem . PHP_EOL;
}
?>

 Para esse caso, foi declarado um array $linguagens, que contenha os valores: Java, JavaScript, C#, PHP e Python. Depois disso, para cada iteração que houver no código, entre os itens dele, a variável $linguagem, receberá o valor atual da iteração, até ela ser encerrada. 

O resultado do exemplo acima será a exibição dos valores declarados no array $linguagens:

Resultado Exemplo 5

6 regras que devem ser seguidas ao usar o foreach PHP

Algumas regras de utilização do Foreach no PHP: 

  • É obrigatório deixar um espaço em branco após a declaração da chave da estrutura;
  • Não é permitido espaço após o parêntese da abertura e antes do fechamento do parêntese;
  • É obrigatório identar seu código nessa estrutura, para ele ficar alinhado da forma correta com os demais itens presentes no código de sua aplicação;
  • É obrigatório ter um espaço em branco entre o parêntese de fechamento da estrutura e a abertura da tag;
  • É obrigatório que a chave de fechamento do bloco do foreach esteja uma linha após a lógica declarada;
  • Conforme já dito anteriormente, o código deverá estar entre chaves, as condições a serem executadas. 

Esse laço de repetição é bem bacana, concorda? Ele pode ser utilizado para organizar listas ou objetos JSON vindo de locais externos, como banco de dados, para os dados serem exibidos na tela conforme o que a pessoa desenvolvedora necessite em seu sistema.

Ele tem dois tipos de sintaxe. Em uma delas, você pode iterar um array e a cada iteração, será atribuído um novo valor para a variável declarada no loop. Já a segunda forma seria a atribuição de uma chave, conforme as iterações forem ocorrendo no sistema. 

Para continuar seus estudos PHP, confira como funciona a estrutura substr!