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.
Curso PHP - Fundamentos
Conhecer o cursoO 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:
- Propriedades de qualquer tipo de objeto
- Classes que extendem ou implementam iterator no PHP
- Funções e métodos que utilizam generators no PHP
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
Formação Desenvolvedor PHP
Conhecer a formaçãoObtendo 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.
Curso PHP - Recursos essenciais
Conhecer o cursoConsideraçõ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.