Bra*_*ace 97
主要是因为在循环中创建HTML时,可以使开始和结束语句更清晰:
<table>
<? while ($record = mysql_fetch_assoc($rs)): ?>
<? if (!$record['deleted']): ?>
<tr>
<? foreach ($display_fields as $field): ?>
<td><?= $record[$field] ?></td>
<? endforeach; ?>
<td>
<select name="action" onChange="submit">
<? foreach ($actions as $action): ?>
<option value="<?= $action ?>"><?= $action ?>
<? endforeach; ?>
</td>
</tr>
<? else: ?>
<tr><td colspan="<?= array_count($display_fields) ?>"><i>record <?= $record['id'] ?> has been deleted</i></td></tr>
<? endif; ?>
<? endwhile; ?>
</table>
Run Code Online (Sandbox Code Playgroud)
与
<table>
<? while ($record = mysql_fetch_assoc($rs)) { ?>
<? if (!$record['deleted']) { ?>
<tr>
<? foreach ($display_fields as $field) { ?>
<td><?= $record[$field] ?></td>
<? } ?>
<td>
<select name="action" onChange="submit">
<? foreach ($actions as $action) { ?>
<option value="<?= $action ?>"><?= action ?>
<? } ?>
</td>
</tr>
<? } else { ?>
<tr><td colspan="<?= array_count($display_fields) ?>"><i>record <?= $record['id'] ?> has been deleted</i></td></tr>
<? } ?>
<? } ?>
</table>
Run Code Online (Sandbox Code Playgroud)
希望我的示例足以证明,一旦你有几层嵌套循环,并且所有PHP打开/关闭标记和包含的HTML都会抛弃缩进(也许你必须以某种方式缩进HTML以获得你的页面你想要的方式),替代语法(endforeach
)形式可以让你的大脑更容易解析.使用正常的样式,结束}
可以自行保留,并且很难说出它们实际关闭的内容.
dec*_*eze 26
它是替代语法的结束语句:
foreach ($foo as $bar) :
...
endforeach;
Run Code Online (Sandbox Code Playgroud)
如果你突破PHP,有助于使代码更具可读性:
<?php foreach ($foo as $bar) : ?>
<div ...>
...
</div>
<?php endforeach; ?>
Run Code Online (Sandbox Code Playgroud)
作为替代语法,您可以像这样编写foreach循环
foreach($arr as $item):
//do stuff
endforeach;
Run Code Online (Sandbox Code Playgroud)
当php被用作模板语言时,通常使用这种类型的语法
<?php foreach($arr as $item):?>
<!--do stuff -->
<?php endforeach; ?>
Run Code Online (Sandbox Code Playgroud)