【发布时间】:2011-06-03 18:42:25
【问题描述】:
我在使用 foreach 循环时使用括号。 endforeach 有什么用?
【问题讨论】:
标签: php loops foreach if-statement
我在使用 foreach 循环时使用括号。 endforeach 有什么用?
【问题讨论】:
标签: php loops foreach if-statement
这是alternative syntax的结束语句:
foreach ($foo as $bar) :
...
endforeach;
如果您要脱离 PHP,有助于使代码更具可读性:
<?php foreach ($foo as $bar) : ?>
<div ...>
...
</div>
<?php endforeach; ?>
【讨论】:
这只是一种不同的语法。而不是
foreach ($a as $v) {
# ...
}
你可以这样写:
foreach ($a as $v):
# ...
endforeach;
它们的功能完全相同;这只是风格问题。 (就我个人而言,我从未见过有人使用第二种形式。)
【讨论】:
echos。
# 作为 PHP 中的注释运算符... ;-)
{..} 似乎更简单
<?php } ?> 正在关闭什么。
# 是 PHP 中散布的替代语法的另一个示例。讨厌它!
作为替代语法,您可以像这样编写 foreach 循环
foreach($arr as $item):
//do stuff
endforeach;
这种类型的语法通常在 php 被用作模板语言时使用
<?php foreach($arr as $item):?>
<!--do stuff -->
<?php endforeach; ?>
【讨论】:
这主要是为了在循环中创建 HTML 时可以使 start 和 end 语句更清晰:
<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以您想要的方式获取您的页面),alternate syntax (endforeach) 表单可以让您的大脑更容易解析。使用正常样式,结束 } 可以自己留下,很难分辨他们实际结束的内容。
【讨论】:
action应该是$action<option value="<?= $action ?>"><?= action ?>
这个怎么样?
<ul>
<?php while ($items = array_pop($lists)) { ?>
<ul>
<?php foreach ($items as $item) { ?>
<li><?= $item ?></li>
<?php
}//foreach
}//while ?>
我们仍然可以使用更广泛使用的大括号,同时提高可读性。
【讨论】:
怎么样?
<?php
while($items = array_pop($lists)){
echo "<ul>";
foreach($items as $item){
echo "<li>$item</li>";
}
echo "</ul>";
}
?>
【讨论】:
使用foreach: ... endforeach; 不仅使内容可读,而且还使内存负载最小,如 PHP 文档中介绍的那样
所以对于大型应用来说,接收大量用户这将是最好的解决方案
【讨论】: