我已经工作PHP
了一段时间,但今天当我看到这个时,它对我来说是新的:
if(preg_match('/foo.*bar/','foo is a bar')):
echo 'success ';
echo 'foo comes before bar';
endif;
令我惊讶的是,它也可以毫无错误地运行。任何人都可以启发我吗?
谢谢大家 :)
我已经工作PHP
了一段时间,但今天当我看到这个时,它对我来说是新的:
if(preg_match('/foo.*bar/','foo is a bar')):
echo 'success ';
echo 'foo comes before bar';
endif;
令我惊讶的是,它也可以毫无错误地运行。任何人都可以启发我吗?
谢谢大家 :)
这是 PHP控制结构的替代语法。
您的代码段相当于:
if(preg_match('/foo.*bar/','foo is a bar')) {
echo 'success ';
echo 'foo comes before bar';
}
一般来说:
if(cond):
...
...
endif;
和
if(cond) {
...
...
}
这种语法风格在嵌入 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>
<? } ?>
详细的结束标签使跟踪嵌套代码块更容易一些,尽管它仍然主要是个人喜好。
http://php.net/manual/en/control-structures.alternative-syntax.php
适用于if
、for
、while
、foreach
和switch
。可以非常方便地混合 PHP 和 HTML。
您可以在 PHP 手册中的控制结构的替代语法中阅读它。重新格式化后,您发布的代码如下所示:
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;
它相当于:
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';
}
支持非标准条件语法的智慧显然值得怀疑。