W3docs

endforeach

La palabra clave "endforeach" es una estructura de control en PHP que marca el final de un bucle "foreach". Explora su sintaxis y uso en este artículo.

La palabra clave endforeach de PHP

endforeach es la palabra clave de cierre para la sintaxis alternativa del foreach loop en PHP. En lugar de envolver el cuerpo del bucle entre llaves, se abre el bloque con dos puntos (:) y se cierra con endforeach;. El comportamiento es idéntico a la versión con llaves — solo cambia la puntuación.

Esta página cubre la sintaxis, cuándo usarla, ejemplos prácticos y los errores comunes (mezcla de sintaxis, referencias) que suelen confundir a los desarrolladores.

Sintaxis

Se reemplaza la { de apertura por : y la } de cierre por endforeach;:

foreach ($array as $value):
  // code to be executed
endforeach;

También funciona con la forma clave/valor:

foreach ($array as $key => $value):
  // code to be executed
endforeach;

Ambas son funcionalmente idénticas a la sintaxis estándar con llaves:

foreach ($array as $value) {
  // code to be executed
}

Cuándo usarla

La sintaxis alternativa existe principalmente para plantillas — archivos que mezclan PHP y HTML. Una } de cierre puede ser difícil de asociar con su llave de apertura cuando hay HTML en medio, mientras que endforeach; se explica por sí sola:

<ul>
<?php foreach ($products as $product): ?>
  <li><?= htmlspecialchars($product) ?></li>
<?php endforeach; ?>
</ul>

En código PHP puro (sin HTML incrustado), la mayoría de los equipos prefieren la sintaxis con llaves. Elige un estilo por archivo y mantenlo de forma coherente.

Ejemplos

Ejemplos de endforeach en 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

El Ejemplo 1 itera sobre una lista simple e imprime cada valor; el Ejemplo 2 itera sobre un array asociativo, capturando tanto $key como $value.

Errores comunes

No mezcles las dos sintaxis. Si abres con :, debes cerrar con endforeach; — y si abres con {, debes cerrar con }. Mezclarlas produce un error de análisis:

// Parse error: this is invalid
foreach ($array as $value): // opens with a colon
  echo $value;
} // ...but tries to close with a brace

Recuerda el punto y coma. Es endforeach;, no endforeach. Olvidar el punto y coma es un error tipográfico frecuente que provoca un error de sintaxis.

El problema con las referencias también aplica aquí. Al igual que con cualquier foreach, si iteras por referencia (as &$value), la variable $value seguirá apuntando al último elemento después de que el bucle termine. Siempre usa unset($value) al terminar para evitar errores 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 )

Palabras clave relacionadas con la sintaxis alternativa

endforeach pertenece a una familia de terminadores de sintaxis alternativa. Cada bucle y condicional tiene el suyo:

  • endif — cierra un bloque if:
  • endfor — cierra un bloque for:
  • endswitch — cierra un bloque switch:

Para el bucle en sí, consulta el capítulo completo sobre el foreach loop.

Conclusión

endforeach cierra la forma con dos puntos de un bucle foreach. Úsala en plantillas donde PHP y HTML están intercalados, mantén la sintaxis coherente dentro de un bloque y recuerda el punto y coma final.

Práctica

Práctica
¿Cuál es la sintaxis para usar la estructura de control endforeach en PHP?
¿Cuál es la sintaxis para usar la estructura de control endforeach en PHP?
Was this page helpful?