endforeach
A palavra-chave "endforeach" é uma estrutura de controle em PHP usada para marcar o fim de um loop "foreach". Explore a sintaxe e o uso neste artigo.
A Palavra-chave PHP endforeach
endforeach é a palavra-chave de fechamento para a sintaxe alternativa do PHP para o loop foreach. Em vez de envolver o corpo do loop com chaves, você abre o bloco com dois-pontos (:) e o fecha com endforeach;. O comportamento é idêntico à versão com chaves — apenas a pontuação muda.
Esta página cobre a sintaxe, quando usá-la, exemplos práticos e os erros comuns (mistura de sintaxes, referências) que costumam confundir as pessoas.
Sintaxe
Você substitui o { de abertura por : e o } de fechamento por endforeach;:
foreach ($array as $value):
// code to be executed
endforeach;Também funciona com a forma chave/valor:
foreach ($array as $key => $value):
// code to be executed
endforeach;Ambos são funcionalmente idênticos à sintaxe padrão com chaves:
foreach ($array as $value) {
// code to be executed
}Quando usar
A sintaxe alternativa existe principalmente para templates — arquivos que misturam PHP e HTML. Um } de fechamento pode ser difícil de associar à sua chave de abertura quando há HTML no meio, enquanto endforeach; é autodocumentado:
<ul>
<?php foreach ($products as $product): ?>
<li><?= htmlspecialchars($product) ?></li>
<?php endforeach; ?>
</ul>Em código PHP puro (sem HTML embutido), a maioria das equipes prefere a sintaxe com chaves. Escolha um estilo por arquivo e mantenha a consistência.
Exemplos
Exemplos de endforeach em PHP
<?php
// Example 1
$array = ["apple", "banana", "cherry"];
foreach ($array as $value):
echo $value . PHP_EOL;
endforeach;
// Output:
// apple
// banana
// cherry
// Example 2
$array = ["a" => "apple", "b" => "banana", "c" => "cherry"];
foreach ($array as $key => $value):
echo $key . " = " . $value . PHP_EOL;
endforeach;
// Output:
// a = apple
// b = banana
// c = cherryO Exemplo 1 itera sobre uma lista simples e imprime cada valor; o Exemplo 2 itera sobre um array associativo, capturando tanto o $key quanto o $value.
Erros comuns
Não misture as duas sintaxes. Se você abre com :, deve fechar com endforeach; — e se abre com {, deve fechar com }. Misturá-las gera um erro de análise:
// Parse error: this is invalid
foreach ($array as $value): // opens with a colon
echo $value;
} // ...but tries to close with a braceLembre-se do ponto e vírgula. É endforeach;, não endforeach. Esquecer o ponto e vírgula é um erro de digitação comum que provoca um erro de sintaxe.
A armadilha da referência também se aplica aqui. Como em qualquer foreach, se você iterar por referência (as &$value), a variável $value ainda apontará para o último elemento após o término do loop. Sempre use unset($value) depois para evitar bugs inesperados:
$array = [1, 2, 3];
foreach ($array as &$value):
$value *= 2;
endforeach;
unset($value); // break the reference
print_r($array);
// Output:
// Array ( [0] => 2 [1] => 4 [2] => 6 )Palavras-chave relacionadas de sintaxe alternativa
endforeach faz parte de uma família de terminadores de sintaxe alternativa. Cada loop e condicional tem o seu próprio:
Para o loop em si, veja o capítulo completo do loop foreach.
Conclusão
endforeach fecha a forma com dois-pontos de um loop foreach. Use-o em templates onde PHP e HTML estão intercalados, mantenha a sintaxe consistente dentro de um bloco e lembre-se do ponto e vírgula no final.