International PHP Conference Berlin 2025

Sintaxis alternativa de estructuras de control

(PHP 4, PHP 5, PHP 7, PHP 8)

PHP ofrece una sintaxis alternativa para algunas de sus estructuras de control, a saber: if, while, for, foreach, y switch. En cada caso, la forma básica de la sintaxis alternativa es cambiar la llave de apertura por dos puntos (:) y la llave de cierre por endif;, endwhile;, endfor;, endforeach;, o endswitch;, respectivamente.

<?php if ($a == 5): ?>
A es igual a 5
<?php endif; ?>

En el ejemplo anterior, el bloque HTML "A es igual a 5" está anidado dentro de una sentencia if escrita en la sintaxis alternativa. El bloque HTML se mostraría solamente si $a es igual a 5.

La sintaxis alternativa también se aplica a else y elseif. La siguiente es una estructura if con elseif y else en el formato alternativo:

<?php
if ($a == 5):
echo
"a igual 5";
echo
"...";
elseif (
$a == 6):
echo
"a igual 6";
echo
"!!!";
else:
echo
"a no es 5 ni 6";
endif;
?>

Nota:

No se admite la mezcla de sintaxis en el mismo bloque de control.

Advertencia

Cualquier salida (incluyendo espacios en blanco) entre una sentencia switch y el primer case resultará en un error de sintaxis. Por ejemplo, esto no es válido:

<?php switch ($foo): ?>
<?php case 1: ?>
...
<?php endswitch ?>

Mientras que lo siguinte es válido, ya que la nueva línea al final después de la sentencia switch es considerada como parte del ?> de cierre, no generando nada entre el switch y el case:

<?php switch ($foo): ?>
<?php
case 1: ?>
...
<?php endswitch ?>

Véase también while, for e if para más ejemplos.

add a note

User Contributed Notes 1 note

up
27
toxyy
2 years ago
I feel compelled to give a more elegant way using heredoc than the other comment:

<ul>
<?php foreach($list as $item): echo
<<<ITEM
<li id="itm-$item[number]">Item $item[name]</li>
ITEM;
endforeach;
?>
</ul>

Which works better with multi line blocks, as you only need one overall php tag.

(please don't omit the closing </li> tag despite it being legal, personal preference)
To Top