我已经在PHP
工作了一段时间,但今天当我看到它时,它对我来说是新的:
if(preg_match('/foo.*bar/','foo is a bar')):
echo 'success ';
echo 'foo comes before bar';
endif;
令我惊讶的是它也运行没有错误。谁能开导我?
感谢所有人:)
答案 0 :(得分:28)
这是PHP的Alternative syntax for control structures。
您的代码段相当于:
if(preg_match('/foo.*bar/','foo is a bar')) {
echo 'success ';
echo 'foo comes before bar';
}
一般来说:
if(cond):
...
...
endif;
与
相同if(cond) {
...
...
}
答案 1 :(得分:14)
在嵌入HTML时更常用这种语法,特别是模板/显示逻辑。以这种方式嵌入时,它比花括号语法更容易阅读。
<div>
<? if ($condition): ?>
<ul>
<? foreach($foo as $bar): ?>
<li><?= $bar ?></li>
<? endforeach ?>
</ul>
<? endif ?>
</div>
对战:
<div>
<? if ($condition) { ?>
<ul>
<? foreach($foo as $bar) { ?>
<li><?= $bar ?></li>
<? } ?>
</ul>
<? } ?>
详细的结束标记使得跟踪嵌套代码块变得容易一些,尽管它仍然主要是个人偏好。
答案 2 :(得分:5)
http://php.net/manual/en/control-structures.alternative-syntax.php
适用于if
,for
,while
,foreach
和switch
。混合PHP和HTML非常方便。
答案 3 :(得分:1)
您可以在PHP手册的Alternative syntax for control structures中阅读相关内容。重新格式化,您发布的代码如下所示:
if (preg_match('/foo.*bar/','foo is a bar')):
echo 'success ';
echo 'foo comes before bar';
endif;
此代码相当于:
if (preg_match('/foo.*bar/','foo is a bar')) {
echo 'success ';
echo 'foo comes before bar';
}
此语法也适用于其他几种控制结构。
if ( condition ):
// your if code
elseif ( other_condition ):
// optional elseif code
else:
// optional else code
endif;
while ( condition ):
// your while code
endwhile;
for ( condition ):
// your for code
endfor;
foreach ( condition ):
// your foreach code
endforeach;
switch ( condition ):
// your switch code
endswitch;
答案 4 :(得分:0)
相当于:
if(preg_match('/foo.*bar/','foo is a bar')):
echo 'success ';
echo 'foo comes before bar';
endif;
相当于:
if(preg_match('/foo.*bar/','foo is a bar')){
echo 'success ';
echo 'foo comes before bar';
}
支持非标准条件语法的智慧显然是值得怀疑的。