流程控制
在线手册:中文  英文

流程控制的替代语法

(PHP 4, PHP 5)

PHP 提供了一些流程控制的替代语法,包括 ifwhileforforeachswitch。替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;endwhile;endfor;endforeach; 以及 endswitch;

<?php if ($a == 5): ?>
A is equal to 5
<?php endif; ?>

在上面的例子中,HTML 内容“A is equal to 5”用替代语法嵌套在 if 语句中。该 HTML 的内容仅在 $a 等于 5 时显示。

替代语法同样可以用在 elseelseif 中。下面是一个包括 elseifelseif 结构用替代语法格式写的例子:

<?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:

不支持在同一个控制块内混合使用两种语法。

更多例子参见 whileforif


流程控制
在线手册:中文  英文

用户评论:

temec987 at gmail dot com (2011-10-02 19:00:40)

A simple alternative to an if statement, which is almost like a ternary operator, is the use of AND. Consider the following:

<?php
     $value 
'Jesus';

     
// This is a simple if statement
     
if( isset( $value ) )
     {
          print 
$value;
     }

     print 
'<br />';

     
// This is an alternative
     
isset( $value ) AND print( $value );
?>

This does not work with echo() for some reason. I find this extremely useful!

dmgx dot michael at gmail dot com (2010-07-19 08:42:10)

If you follow MVC design pattern then only your view files should have HTML in them to begin with.  Using the braceless syntax in these files only further separates them thematically from the rest of the code.

The major advantage of braceless syntax is that braces get lost while jumping into and out of php mode, especially if you use php short tags (which contrary to what is stated elsewhere, if you are using htaccess to deploy mod_rewrite in your application it is safe to use short tags in your application.  The server admins CANNOT deny short tags to you while simultaneously granting mod_rewrite (and why they would even try is beyond me).

Another thing I've noted in the examples above - it is safe to omit the ending semicolon prior to a script close tag, and it's slightly easier to read. <? endforeach ?> than <?php endforeach; ?>

ej at iconcept dot fo (2009-05-28 05:30:32)

if statement in 1 line
<?php
$hour 
11;

print 
$foo = ($hour 12) ? "Good morning!" "Good afternoon!";

?>
return Good morning!

flyingmana (2009-03-26 01:43:46)

It seems to me, that many people think that

<?php if ($a == 5): ?>
A ist gleich 5
<?php endif; ?>

is only with alternate syntax possible, but 

<?php if ($a == 5){ ?>
A ist gleich 5
<?php }; ?>

is also possible.

alternate syntax makes the code only clearer and easyer to read

mido_alone2001 at yahoo dot com (2008-11-07 06:05:19)

Hello , when you going to make a script , you must try easist way to do and fastest way to parse ..
using alternative-syntax is very useful to shorten your code
e.g :
If you want to do:

<?php
    $a
=;
if (
$a==1) {
     echo 
"<table border=1><tr><td>$a is equal to one    </td></tr></table> " ;
}
?>

You can do it using alternative-syntax as following :

<?php
    $a
=;
if (
$a==1) :?>
<table border=1><tr><td><?echo $a ;?> &nbsp;is equal to one </td></tr></table>
<?php endif ; ?>

So the HTML code Won't excuted until the condition is true

[EDIT BY danbrown AT php DOT net: Contains a bug fix provided by (gmdebby AT gmail DOT com).]

jeremia at gmx dot at (2008-01-28 06:52:21)

If you wan't to use the alternative syntax for switch statements this won't work:

<div>
<?php switch($variable): ?>
<?php 
case 1?>
<div>
Newspage
</div>
<?php break;?>
<?php 
case 2?>
</div>
Forum
<div>
<?php break;?>
<?php 
endswitch;?>
</div>

Instead you have to workaround like this:

<div>
<?php switch($variable): 
case 
1?>
<div>
Newspage
</div>
<?php break;?>
<?php 
case 2?>
</div>
Forum
<div>
<?php break;?>
<?php 
endswitch;?>
</div>

skippy at zuavra dot net (2005-06-27 04:32:10)

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.

易百教程