W3docs

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 = cherry

O 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 brace

Lembre-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.

Prática

Prática
Qual é a sintaxe para usar a estrutura de controle endforeach em PHP?
Qual é a sintaxe para usar a estrutura de controle endforeach em PHP?
Was this page helpful?