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