簡體   English   中英

循環中的endforeach?

[英]endforeach in loops?

我在使用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; ?>

作為替代語法,您可以像這樣編寫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 ?>

我們仍然可以使用更廣泛使用的括號,同時提高可讀性。

這只是一種不同的語法。 代替

foreach ($a as $v) {
    # ...
}

你可以這樣寫:

foreach ($a as $v):
    # ...
endforeach;

它們的功能完全相同; 這只是一種風格問題。 (我個人從未見過有人使用過第二種形式。)

使用foreach: ... endforeach; 它不僅使事物可讀,而且對PHP內存中的內存負載也最小。因此,對於大型應用程序,接收許多用戶這將是最佳解決方案

那個怎么樣?

<?php
    while($items = array_pop($lists)){
        echo "<ul>";
        foreach($items as $item){
            echo "<li>$item</li>";
        }
        echo "</ul>";
    }
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM