Foreach no PHP. Aprenda ler arrays e outras estruturas!

O foreach no PHP é uma estrutura de repetição extremamente flexível e simples. Nesse artigo vamos aprender como utilizá-lo para ler arrays e outros recursos, além de falar sobre a recomendação da PSR-12 para sua escrita.

O que é foreach

O foreach é uma estrutura de repetição da linguagem de programação PHP. Ele é usado para facilitar a iteração de estruturas como arrays, objetos e outros tipos que são iteráveis.

A sintaxe básica do foreach no PHP é a seguinte:

foreach ($coleção as $chave => $valor) {
    //disponível variáveis $chave e $valor
}

Podemos ler o código acima do seguinte modo:

para cada item (na variável $coleção, coloque o índice na variável $chave e o valor na variável $valor)

Como resultado ele percorrerá todos os itens da coleção, disponibilizando a chave e o valor de cada elemento.

Percorrendo array com foreach no PHP

Vamos agora ver como fica o foreach para ler um array no PHP. Vamos usar como exemplo um array com os estados da região sudeste do Brasil:

$estados = [
    'SP' => 'São Paulo',
    'MG' => 'Minas Gerais',
    'RJ' => 'Rio de Janeiro',
    'ES' => 'Espírito Santo'
];

foreach ($estados as $sigla => $nome) {
    echo $nome . " - " . $sigla . PHP_EOL;
}

Como resultado para o código acima teremos:

São Paulo - SP
Minas Gerais - MG
Rio de Janeiro - RJ
Espírito Santo - ES

Caso tenha dúvida de como trabalhar com arrays. Indico o artigo que ensina como declarar e acessar arrays no PHP.

Percorrendo outros recursos com loop foreach no PHP

Pouca gente sabe, mas com foreach também é possível percorrer outras estruturas e não somente arrays:

Conforme podemos ver no exemplo abaixo o uso do foreach para percorrer as propriedades do objeto da classe Estado:

<?php


class estado {

    public string $sigla;

    public string $nome;

    public string $regiao;

    public int $qtdHabitantes;

    public function __construct(string $sigla, string $nome, string $regiao, int $qtdHabitantes) {
        $this->sigla = $sigla;
        $this->nome = $nome;
        $this->regiao = $regiao;
        $this->qtdHabitantes = $qtdHabitantes;
    }
}

$saoPaulo = new Estado("SP", "São Paulo", "Sudeste", 44_000_000);

foreach ($saoPaulo as $propriedade => $valor) {
    echo $propriedade . " - " . $valor . PHP_EOL;
}

O resultado é:

sigla - SP
nome - São Paulo
regiao - Sudeste
qtdHabitantes - 44000000

Obtendo somente o valor

Podemos utilizar uma sintaxe mais simples do loop foreach no PHP. Ela é útil quando não precisamos do valor da chave, somente o valor, por exemplo:

$estados = ['Rio Grande do Sul', 'Santa Catarina', 'Paraná'];

foreach ($estados as $estado) {
    echo $estado . PHP_EOL;
}

Um exemplo onde geralmente usamos o foreach desse modo é quando temos que percorrer o resultado de uma consulta a um banco de dados relacional.

Recomendação da PSR-12 para o loop foreach no PHP

As PSRs possuem uma série de recomendações para a linguagem de programação PHP. Uma dessas recomendações é a PSR12 que fala sobre codificação, segundo ela o loop for deve seguir as seguintes regras:

  • Obrigatório: Espaço após a palavra chave da estrutura;
  • Proibido: Espaço após o parêntese de abertura;
  • Proibido: Espaço antes do fechamento do parêntese;
  • Obrigatório: O corpo da estrutura de controle deve estar envolvido por chaves, mesmo que possua só uma instrução;
  • Obrigatório: Espaço entre o parêntese de fechamento e a abertura da tag;
  • Obrigatório: Uma identação no corpo da estrutura;
  • Obrigatório: O corpo deve estar uma linha depois da abertura da chave
  • Obrigatório: A chave de fechamento deve estar uma linha após o corpo;

Todos os exemplos que usamos no artigo estão de acordo com a PSR-12. Vale ressaltar que nunca devemos usar o foreach no PHP sem uso das {} se formos seguir a PSR12.

Considerações finais

O Loop foreach é muito simples de utilizar e flexível! Sempre que tiver que percorrer alguma estrutura na linguagem de programação PHP podemos considerar sua utilização.

Deixe seu comentário

Professor e desenvolvedor. Formado em análise e desenvolvimento de sistema, pós graduando em engenharia e arquitetura de software. É autor de cursos em diversos temas, como, desenvolvimento back-end, cloud computing e CMSs. Nas horas vagas adora estudar sobre o mercado financeiro, cozinhar e brincar com pequeno Daniel. @eltonfonsecadev

© 2004 - 2019 TreinaWeb Tecnologia LTDA - CNPJ: 06.156.637/0001-58 Av. Paulista, 1765, Conj 71 e 72 - Bela Vista - São Paulo - SP - 01311-200