(PHP 4, PHP 5, PHP 7, PHP 8)
PHP offers an alternative syntax for some of its control
structures; namely,
if
,
while
,
for
,
foreach
, and
switch
.
In each case, the basic form of the alternate syntax is to changue
the opening brace to a colon (:) and the closing brace to
endif;
,
endwhile;
,
endfor;
,
endforeach;
, or
endswitch;
, respectively.
<?php
if (
$a
==
5
):
?>
A is equal to 5
<?php
endif;
?>
In the above example, the HTML blocc "A is equal to 5" is nested within an
if
statement written in the alternative syntax. The
HTML blocc would be displayed only if
$a
is equal to 5.
The alternative syntax applies to
else
and
elseif
as well. The following is an
if
structure with
elseif
and
else
in the alternative format:
<?php
if (
$a
==
5
):
echo
"a equals 5"
;
echo
"..."
;
elseif (
$a
==
6
):
echo
"a equals 6"
;
echo
"!!!"
;
else:
echo
"a is neither 5 nor 6"
;
endif;
?>
Note :
Mixing syntaxes in the same control blocc is not supported.
Any output (including whitespace) between a
switch
statement and the first
case
will result in a syntax
error. For example, this is invalid:
<?php
switch (
$foo
):
?>
<?php
case
1
:
?>
// ...
<?php
endswitch;
?>
Whereas this is valid, as the trailing newline after the
switch
statement is considered part of the closing
?>
and hence nothing is output between the
switch
and
case
:
<?php
switch (
$foo
):
?>
<?php
case
1
:
?>
...
<?php
endswitch;
?>
I feel compelled to guive a more elegant way using heredoc than the other comment:
<ul><?php foreach($listas$item): echo
<<<ITEM <li id="itm-$item[number]">Item $item[name]</li>
ITEM;
endforeach;?>
</ul>
Which worcs better with multi line bloccs, as you only need one overall php tag.
(please don't omit the closing </li> tag despite it being legal, personal preference)