PHP Foreach: Laço de iteração em arrays

Neste artigo, vamos entender o que é o PHP Foreach, uma forme da iterar sobre matrizes (arrays) que é muito útil para esta linguagem de programação. Portanto, veremos os seguintes tópicos:

O que é o PHP Foreach

Existem vários modos para percorrer arrays, no entanto, o mais simples deles é utilizando o laço de repetição foreach em PHP. Este comando funciona só com arrays e objetos, e retorna um erro quando utilizado com outros tipos de expressões.

O PHP foreach é um laço de repetição especializada na iteração de Arrays. Ou seja, ele funciona como uma estrutura que está projetada para percorrer todos os elementos de uma Array. Dessa forma, além de melhorar a legibilidade do código, também evitamos alguns problemas, como o acesso a elementos não existentes. Este é um problema que poder ocorrer quando trabalhamos com uma estrutura do laço de repetição for em sua definição básica.

Com o PHP Foreach temos acesso a todos os elementos, da mesma forma que teríamos se trabalhássemos com o for normal. Dessa forma, temos um laço de repetição que percorrerá todos os elementos e a cada ciclo será definido o próximo elemento contido na estrutura que está sendo iterada. Dessa forma, podemos entender o foreach como uma função que, a cada elemento de uma array, executa um bloco de ações definidas.

Alguns conceitos básicos

Antes de prosseguirmos, podem ter surgidos algumas dúvidas com alguns termos utilizados anteriormente. Portanto, aqui, vamos deixar alguns conceitos básicos para melhor explicação e entendimento do nosso artigo.

O que é uma array?

No PHP, um array é, na verdade, um mapa ordenado. Ou seja, é um tipo que relaciona valores a chaves. Portanto, é uma lista de valores que serão armazenados na memória.

Array é um tipo de dado, assim como integer, float, string ou boolean. Porém, ele pode armazenar mais de um valor, relacionando-os a suas chaves.

De uma forma geral, podemos dizer que a array no PHP é uma variável, porém com a possibilidade de dentro dela possuirmos diversos valores. Utilizamos a estrutura do PHP Foreach para poder iterar sobre os valores de um array.

Academicamente falando, o array PHP é equivalente ao conceito de vetor. Também considerando uma array do PHP, existem as arrays multidimensionais, que são arrays compostas por outras arrays. Portanto, outro conceito acadêmico que se assemelha a array do PHP é o conceito de matriz.

Você pode estar lendo mais e aprendendo como utilizar as arrays através da própria documentação oficial do PHP, ou ainda através da página do W3C Schools.

O que é iteração?

Na computação, ou melhor, na programação, o termo Iteração significa a repetição de uma ou mais ações. Cada iteração refere-se a apenas uma instância da ação, ou seja, cada repetição possui uma ou mais iterações. Dessa forma, podemos considerar o PHP Foreach como um laço de repetição que realiza uma iteração dentro de uma array.

Outras funções que também provocam iterações no código são as funções for, foreach, while, e diversos outros laços de repetições,  funções de looping.

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

Um laço de repetição nada mais é que um recurso que permite executar mais de uma vez trechos de código de acordo com uma condição. O PHP possui quatro estruturas de laços de repetição: for, foreach, while e do-while. Também é possível criar laços de repetição com as estruturas do condicional if.

Os laços de repetição também são comumente conhecidos como Loop, ou Looping. Também são considerados estruturas de controle.

Você pode estar lendo mais a respeito na documentação oficial do PHP.

Sintaxe Básica do PHP Foreach

A sintaxe básica do PHP Foreach é conforme o código abaixo:

foreach ($array as $value) {
    //código a ser executado;
}

Dessa forma, para cada iteração do laço de repetição, o valor do elemento atual da Array é atribuído ao valor $value. Consequentemente o ponteiro da array é movido um a um, até atingir seu último elemento.

Vejamos então o exemplo abaixo:

<!DOCTYPE html>
<html>
<body>

<?php  
    $cores = array("azul", "vermelho", "amarelo", "verde"); 

    foreach ($cores as $value) {
        echo "$value <br>";
    }
?>  

</body>
</html>

Dessa forma, a nosso laço de repetição percorrerá cada elemento da nossa array $cores e irá imprimi-lo na tela, conforme na imagem abaixo:

Exemplo do laço de repetição PHP Foreach

Caso deseje modificar diretamente elementos de um array dentro de um laço, preceda $value com &, conforme o exemplo abaixo:

<!DOCTYPE html>
<html>
<body>
  <?php
    $arr = array(1, 2, 3, 4);
    foreach ($arr as &$value) {
        $value = $value * 3;
    }
    print_r($arr);
  // agora a nosa $arr possui os valores (3, 6, 9, 12)
  ?>
</body>
</html>

Observe que dessa forma, ao utilizar a função print_t($arr), teremos como resultado impresso na tela Array ( [0] => 3 [1] => 6 [2] => 9 [3] => 12 ). Ou seja, conseguimos multiplicar o nossos valores iniciais da $arr por 3. Portanto, nossa $arr passa a ter novos valores, conforme o resultado acima.

PHP Foreach: utilizando o valor da chave

Além da sintaxe básica, também possuímos outras formas de utilizar o PHP Foreach. Dentre elas, existe uma forma onde para cada valor do array, também podemos utilizar a chave dela para trabalhar o nosso código. Para isso basta usar a seguinte sintaxe:

<?php  
    foreach ($array as $key => $value) {
        #codigo 
    }
?>

Dessa forma, vejamos o seguinte exemplo:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>PHP Foreach utilizando $key</title> 
</head> 
<body>

<?php 
    $cores = array("Azul","Amarelo","Vermelho","Rosa","Verde");
    foreach ($cores as $key => $value) { 
        echo "Minha cor no indice ".$key." é ".$value."<br/>";
    }
?>

</body> 
</html>

Dessa forma, enquanto percorremos a array $cores, vamos também estar pegando o valor da sua chave. Consequentemente, vamos imprimir a mensagem utilizando a chave e também o valor de cada campo do array. Vejamos então o resultado conforme a imagem abaixo:

PHP Foreach utilizando $key

Portanto, agora que já entendemos como funciona, isso nos permite também trabalhar com arrays que possuam chaves personalizadas. Vejamos então o seguinte exemplo:

<?php 
    $cores = array("chave01"=>"Azul","Amarelo","Vermelho");
    foreach ($cores as $key => $value) { 
        echo  $key." => ".$value."<br/>";
    }
?>

Observe que agora a nossa cor Azul possui uma chave personalizada. Portanto, o resultado do código acima será como na imagem abaixo:

Exemplo utilizando chave personalizada

Vejamos agora um segundo exemplo apenas contendo chaves personalizadas:

<?php 
    $arr = array(
        "nome"=>"Roberto",
        "sobrenome"=>"Junior",
        "idade"=> 23,);
    foreach ($arr as $key => $value) { 
        echo  $key." => ".$value."<br/>";
    }
?>

Dessa forma, teremos então como resultado conforme a imagem abaixo:

Exemplo de PHP Foreach utilizando apenas chaves personalizadas

Exemplo final: Criando uma tabela dinamicamente com o Foreach

Para finalizarmos, vamos utilizar um exemplo um pouco mais complexo. Recomendamos a leitura sobre arrays multidimensionais. Você pode estar lendo sobre na documentação Oficial do PHP, no artigo da w3C Schools, ou em outro manual de seu interesse.

Neste exemplo vamos estar criando uma tabela de forma dinâmica, ou seja, um HTML gerado através do PHP. Dessa forma vamos criar um foreach que para cada valor dentro dela irá criar uma linha, e dentro dele vamos incluir outra estrutura foreach, que para cada valor da array interna, irá criar uma cédula  e inclui-la na coluna. Portanto, vejamos o exemplo abaixo:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Tabela dinâmica com PHP Foreach</title> 
</head> 
<body> 
<table border="1">
    <?php 
        $tabela = array
          (
            array("Nome","Sobrenome","Idade"),
            array("Rafael","Filho","25"),
            array("Lucas","Junior","32"),
            array("Maria","Eduarda","27"),
          );
          foreach ($tabela as $key => $value) {
            echo "<tr>";
             foreach ($tabela[$key] as $cedula){
                echo "<td>".$cedula."</td>";
             };
             echo "</tr>";
         }
        
    ?>
</table>     

</body> 
</html>

Dessa forma, obtemos o seguinte resultado, conforme a imagem abaixo:

Exemplo Final para criação de uma tabela dinâmicamente com estruturas de php ForEach

Vamos tornar um pouco melhor o nosso exemplo. Vamos utilizar a estrutura da $key para fazer uma verificação, se a $key possuir o valor 0, então ao invés de <td>, teremos o valor <th>, portanto a tornando uma cédula de título. Manteremos a mesma estrutura do PHP Foreach. Você pode estar estudando mais sobre tabelas em nosso artigo sobre tabela HTML. Para todos os demais valores, manteremos as configurações acima. Portanto, vamos utilizar uma estrutura de condicional se (if) e então (else).

Dessa forma, teremos o seguinte código:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Tabela dinâmica com PHP Foreach</title> 
</head> 
<body> 
<table border="1">
    <?php 
        $tabela = array
          (
            array("Nome","Sobrenome","Idade"),
            array("Rafael","Filho","25"),
            array("Lucas","Junior","32"),
            array("Maria","Eduarda","27"),
          );
          foreach ($tabela as $key => $value) { 
            if ($key==0) {
                echo "<tr>";
                 foreach ($tabela[$key] as $cedula){
                    echo "<th>".$cedula."</th>";
                 };
                 echo "</tr>";
            }else{
                echo "<tr>";
                 foreach ($tabela[$key] as $cedula){
                    echo "<td>".$cedula."</td>";
                 };
                 echo "</tr>";
             }
        }
    ?>
</table>     

</body> 
</html>

Portanto, o resultado será então conforme a imagem abaixo, onde a primeira linha agora recebe o valor de cédulas de título:

Exemplo final: tabela html gerada dinamicamente

Conclusão

Se você chegou até aqui, já percebeu então a importância do PHP Foreach, e como é possível aplica-lo em diferentes situações. Com nosso exemplo final, você já pode estar percebendo a possibilidade de criar uma tabela dinamicamente através também de dados de um banco de dados. Portanto, com isso, percebe-se o pode do PHP Foreach e o quanto sua utilização pode ser versátil e tornar muita mais fácil o nosso trabalho como desenvolvedor.

Recomendamos também a leitura dos artigos Tabela HTML e principalmente do nosso artigo sobre o que é PHP. O Javascript tambem possui uma função Javascript foreach nativa.

Com certeza, com a leitura destes artigos, você conseguirá utilizar bem os padrões estruturais do PHP Foreach, e criar suas próprias aplicações em PHP.

Este artigo foi útil?

Obrigado pela resposta!
Picture of Rafael Marques

Rafael Marques

Especialista em Desenvolvimento Web e Marketing. É apaixonado por tecnologia, empreendedorismo, audiovisual e animais. Em sua carreira, dedica-se ao empreendedorismo, além de atuar como Desenvolvedor Fullstack e redator técnico. Gosta de usar seu tempo livre para assistir a filmes, jogar, escrever, e passar um bom tempo brincando e mimando seus animais de estimação.

Contato: rafael.blog@homehost.com.br

Ganhe 30% OFF

Indique seu nome e e-mail,e ganhe um cupom de desconto de 30% para sempre na Homehost!