Curso de PHP: Estrutura de repetição foreach

Aqui no site já foi explicado anteriormente sobre o funcionamento dos arrays (matrizes). A tarefa mais comum quando trabalhamos com arrays é percorrer o array para ler cada item. É muito comum usar a estrutura de repetição for para isso, mas também é possível usar o while. Mas agora apresento uma nova, e as vezes mais apropriada para isso: o foreach

Veja sua estrutura:

foreach ($variavel as $chave => $valor) {
    instrução1;
    instrução2;
    instruçãoN;
}

O foreach percorre cada item da $variavel. Em cada item, ele armazena a chave do ítem na variável $chave e seu respectivo valor em $valor.

Para exemplificar melhor, abaixo há um código que percorre um array usando o for:

<?php
    $nomes = array('Edgar', 'Maria', 'Carlos');
   
    for ($i = 0; $i < 3; $i++) {
        echo 'Posição: ' . $i . ' Nome: ' . $nomes[$i] . '<br      />';
    }

O mesmo código usando o foreach poderia ser escrito assim:

<?php
    $nomes = array('Edgar', 'Maria', 'Carlos');
   
    foreach ($nomes as $posicao => $nome) {
        echo 'Posição: ' . $posicao . ' Nome: ' . $nome . '<br      />';
    }
  

Perceba que é o mesmo resultado.

O foreach chega a facilitar mesmo quando o seu array contém índices não numéricos. Veja:

<?php
    $nomes = array('filho' => 'Edgar', 'mae' => 'Maria', 'pai' => 'Carlos');
   
    foreach ($nomes as $parentesco => $nome) {
        echo 'Parentesco: ' . $parentesco . ' Nome: ' . $nome . '<br      />';
    }
  

Até é possível escrever o código acima com for, mas é muito mais simples usar o foreach.

E se você não precisar usar a chave, você pode ocultá-la:

<?php
    $nomes = array('filho' => 'Edgar', 'mae' => 'Maria', 'pai' => 'Carlos');
    
    foreach ($nomes as $nome) {
        echo ' Nome: ' . $nome . '<br      />';
    }

Observação: O foreach pode ser utilizado com outro tipo de variável, os objetos, porém, quando chegar a hora irei comentar.