我已經工作PHP
一段時間,但今天,當我看到這一點,來到新的對我說:奇怪的PHP語法
if(preg_match('/foo.*bar/','foo is a bar')):
echo 'success ';
echo 'foo comes before bar';
endif;
令我吃驚的它也運行沒有錯誤。任何人都可以啓發我嗎?
感謝所有:)
我已經工作PHP
一段時間,但今天,當我看到這一點,來到新的對我說:奇怪的PHP語法
if(preg_match('/foo.*bar/','foo is a bar')):
echo 'success ';
echo 'foo comes before bar';
endif;
令我吃驚的它也運行沒有錯誤。任何人都可以啓發我嗎?
感謝所有:)
當嵌入到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>
<? } ?>
的冗長的結束標記,使其更容易一些跟蹤嵌套的代碼塊,但它仍然主要是個人喜好。
這是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) {
...
...
}
http://php.net/manual/en/control-structures.alternative-syntax.php
Works爲if
,for
,while
,foreach
和switch
。對於混合PHP和HTML可能非常方便。
您可以在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;
這是等價的:
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';
}
的支持非標準條件語法的智慧顯然是有問題的。
此語法在模板中可能非常有用,因此ihmo不會有問題。或者至少不明顯;) – 2010-05-07 13:48:02
正如下面的答案所說,這是一種替代語法。閱讀海事組織也非常痛苦,請在自己的代碼中避免這種情況。 – nickf 2010-05-07 13:36:46
當您經常打開和關閉並在兩者之間使用html時,此類語法在模板中使用。即使在這些情況下,它是可怕的和不可讀的,應該完全避免。 – 2010-05-07 13:48:18
@ Lo'oris,我不同意你的看法。如果你問我,在模板中使用它可以提高可讀性:有關示例,請參閱http://stackoverflow.com/questions/2788891/strange-php-syntax/2789008#2789008。 – 2010-05-07 13:50:42