PHP: Alternative syntax for control structures - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

while elseif

Last updated: Sat, 27 Jan 2007

view this page in

# Alternative syntax for control structures

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 change 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 block "A is equal to 5" is nested within an `if` statement written in the alternative syntax. The HTML block 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;
?>`

See also while, for, and if for further examples.

add a note User Contributed Notes
Alternative syntax for control structures
fernandoleal at dragoncs dot com
03-Feb-2007 11:17
`If you need nested ifs on I var its important to group the if so it works.
Example:
<?php
//Dont Works
//Parse error: parse error, unexpected ':'
$var='<option value="1" '.$status == "1" ? 'selected="selected"' :''.'>Value 1</option>';
//Works:
$var='<option value="1" '.($status == "1" ? 'selected="selected"' :'').'>Value 1</option>';
echo $var;
?>`
atw
03-Nov-2006 04:47
`As "qbolec" states, all the notes below which use the "?" are actually references to the ternary operator (http://uk.php.net/operators.comparison").
Whilst this is kind of relevent, it probably shouldn't be in this section.`
Neil
29-Sep-2006 12:08
`as skippy noted above this is very useful stuff for interspersed php & html. Here is alternative syntax example using a bitwise comparison to set checkboxes on and off to prefill a permissions bitmask calculator form:
<?
$bitmask = 481683;
?>
.... [yada yada yada]....
<input type="checkbox" name="SOME_PERMISSION_VARIABLE" value="32768" <? echo($bitmask & 32768 ? "checked" : ""); ?>>Can perform some operation<br/>
<input type="checkbox" name="SOME_OTHER_PERMISSION_VARIABLE" value="65536" <? echo($bitmask & 65536 ? "checked" : ""); ?>>Can perform some other operation<br/>
You supply a bitmask, and it prechecks all the permissions the user has so you don't need to remember what they already have to recheck them all individually.
It's much more elegant than traditional if's.`
davidforest at gmail dot com
19-Oct-2005 06:26
`If you need a tidy way to do a lot of condition testing, switch statement will do the job well:
switch (true){
case ($a>0):
//do sth;
break;
case ($b>0):
//do sth;
break;
case ($c>0):
//do sth;
break;
case ($d>0):
//do sth;
break;
}`
skippy at zuavra dot net
27-Jun-2005 04:32
`If it needs saying, this alternative syntax is excellent for improving legibility (for both PHP and HTML!) in situations where you have a mix of them.
Interface templates are very often in need of this, especially since the PHP code in them is usually written by one person (who is more of a programmer) and the HTML gets modified by another person (who is more of a web designer). Clear separation in such cases is extremely useful.
See the default templates that come with WordPress 1.5+ (www.wordpress.org) for practical and smart examples of this alternative syntax.`
siebe-tolsma at home dot nl
18-Mar-2004 10:22
`As a rection on sttoo, if you use nested if's a bit different they are less likely to cause mistakes:
[EDITOR'S NOTE: Referenced Note has been removed]
<?php
$one = true;
$two = true;
$result = ($one ? "one" : ($two ? "two" : "none")); // $result is "one"
$one = false;
$result = ($one ? "one" : ($two ? "two" : "none")); // $result is "two"
$two = false;
$result = ($one ? "one" : ($two ? "two" : "none")); // $result is "none"
?>`
i a m 4 w e b w o r k at hotmail dot com
12-Oct-2003 04:38
`Good tutorial on using alternative control structure syntax at:
http://www.onlamp.com/pub/a/php/2001/05/03/php_foundations.html?page=1`
paul at example dot com
06-Sep-2003 06:27
`There is an other alternative syntax:
<?php
if ($a > 5) {
echo "big";
} else {
echo "small";
}
?>
can be replaced by:
<?php
echo $a > 5 ? "big" : "small";
?>`
add a note
while elseif

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 09:32:46 2007 PST