endforeach in loops?
2022-08-30 09:55:57
我在使用 foreach 循环时使用括号。endforeach是用来做什么的?
我在使用 foreach 循环时使用括号。endforeach是用来做什么的?
这主要是为了让您在循环中创建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>
对
<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>
希望我的例子足以证明,一旦你有几层嵌套循环,并且缩进被所有的PHP打开/关闭标签和包含的HTML抛弃(也许你必须以某种方式缩进HTML才能让你的页面按照你想要的方式),替代语法()形式可以让你的大脑更容易解析。使用正常样式,关闭可以自行保留,并且很难分辨出它们实际关闭的内容。endforeach
}
这是替代语法的结束语句:
foreach ($foo as $bar) :
...
endforeach;
如果您要脱离 PHP,则对于使代码更具可读性非常有用:
<?php foreach ($foo as $bar) : ?>
<div ...>
...
</div>
<?php endforeach; ?>