Я использую скобки при использовании петель foreach. Для чего это конец?
Endforeach в циклах?
Ответ 1
В основном это значит, что при создании 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
) может облегчить анализ вашего мозга. С обычным стилем закрытие }
можно оставить самостоятельно и затруднить определение того, что они фактически закрывают.
Ответ 2
Это конечная инструкция для альтернативного синтаксиса :
foreach ($foo as $bar) :
...
endforeach;
Полезно сделать код более читаемым, если вы нарушите PHP:
<?php foreach ($foo as $bar) : ?>
<div ...>
...
</div>
<?php endforeach; ?>
Ответ 3
в качестве альтернативного синтаксиса вы можете писать так называемые петли foreach
foreach($arr as $item):
//do stuff
endforeach;
Этот тип синтаксиса обычно используется, когда php используется как язык шаблонов как таковой
<?php foreach($arr as $item):?>
<!--do stuff -->
<?php endforeach; ?>
Ответ 4
Это просто другой синтаксис. Вместо
foreach ($a as $v) {
# ...
}
Вы можете написать это:
foreach ($a as $v):
# ...
endforeach;
Они будут действовать точно так же; это просто вопрос стиля. (Лично я никогда не видел, чтобы кто-то использовал вторую форму.)
Ответ 5
Как насчет этого?
<ul>
<?php while ($items = array_pop($lists)) { ?>
<ul>
<?php foreach ($items as $item) { ?>
<li><?= $item ?></li>
<?php
}//foreach
}//while ?>
Мы все еще можем использовать более широко используемые фигурные скобки и в то же время повышать читаемость.
Ответ 6
Использование foreach:
... endforeach;
не только делает чтение понятным, но и делает наименьшую нагрузку на память, как представлено в PHP-документах
Таким образом, для больших приложений, получающих много пользователей, это было бы лучшим решением.
Ответ 7
Как насчет этого?
<?php
while($items = array_pop($lists)){
echo "<ul>";
foreach($items as $item){
echo "<li>$item</li>";
}
echo "</ul>";
}
?>