使用foreach循環時,我使用括號。什麼是endforeach?endforeach in loops?
回答
它主要是讓你可以在創建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),alternate syntax(endforeach
)表單可以讓你的大腦更容易解析。如果採用正常風格,關閉}
可以自己留下,並且很難說出它們實際上正在關閉的內容。
這對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;
他們將發揮作用完全一樣;這只是一個風格問題。 (我個人從未見過任何人使用第二種形式。)
第二種形式在使用95%HTML的模板中使用PHP以及PHP控制結構和「echo」時使用更多。 – 2011-01-05 02:54:02
就我個人而言,我從來沒有見過任何人使用'#'作爲PHP中的註釋運算符...... ;-) – deceze 2011-01-05 02:55:21
@Matthew,那麼第二種形式的優點是什麼?我不明白。對我來說,使用'{..}' – CyberJunkie 2011-01-05 02:56:28
作爲替代的語法可以寫foreach循環像這樣
foreach($arr as $item):
//do stuff
endforeach;
當PHP被用作模板這種類型的語法的通常用於語言作爲這樣
<?php foreach($arr as $item):?>
<!--do stuff -->
<?php endforeach; ?>
這個怎麼樣?
<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>";
}
?>
通常你的IDE無法識別的字符串包含HTML,它不會警告非匹配標籤。 – 2014-11-11 05:13:05
使用foreach:
... endforeach;
不僅使事情可讀,這也使得最小負載的內存作爲PHP文檔 因此,對於大型應用推出,收到了許多用戶來說,這將是最好的解決辦法
- 1. 語法錯誤,意外'endforeach'
- 2. Javascript loops
- 3. Javascript objects&loops
- 4. netCDF to * .csv without Loops(!)
- 5. Javascript Prompt Box Loops
- 6. While Loops - Time
- 7. State Monad - While-loops
- 8. while和for loops
- 9. PHP - Codeigniter twitter loops
- 10. PHP Loops&array_filter
- 11. While While Loops
- 12. For Loops問題
- 13. Jquery Ajax .load loops
- 14. Python 3 For/While Loops
- 15. ANTLR Tree Grammar for loops
- 16. FOREACH ... ENDFOREACH循環中的語法錯誤
- 17. for-each和for loops
- 18. Javascript to jquery for loops
- 19. while while loops within expected
- 20. For loops&If語句
- 21. For-Loops很奇怪
- 22. While Loops(And,Not,Or)
- 23. Javascript,驗證,for-loops
- 24. Python while while continue loops
- 25. Halide sum loops嵌套
- 26. PHP分組和LOOPS
- 27. Python 3.0中的For-loops
- 28. 用python for loops問題
- 29. while和switch loops的問題
- 30. UIImageView +動畫GIF總是LOOPS
如果您有括號匹配,那麼即使在許多HTML中,我也會發現更容易看到{}。儘管設計師可能更容易,但大多數工具都支持突出顯示的支架匹配。 – phazei 2012-04-21 01:44:43
同意@phazei,如果你沒有使用與括號相匹配的編輯器,那麼你使用的是錯誤的編輯器。 – Jason 2013-04-23 20:34:59
很好的答案。我推廣使用模板中的替代形式。它更清潔,並且與注入的語言衝突得更少。依靠你的IDE讓你的亂碼更具可讀性並不是真的可以接受。雖然最終我總是看到這個辯論作爲支撐辯論的延伸,並且這另一種形式是大約相當於奧爾曼風格http://en.wikipedia.org/wiki/Indent_style#Allman_style與平衡到代碼的眼塊那它呈現。如果你沒有得到或理解Allman的好處,你可能不會得到這個好處。 – Gavin 2013-09-19 06:47:04