endforeach in loop?

Io uso le parentesi quando si utilizza foreach loop. Che cosa è endforeach per?

InformationsquelleAutor CyberJunkie | 2011-01-05



7 Replies
  1. 93

    È soprattutto così che si può fare di inizio e di fine delle dichiarazioni più chiara quando la creazione di HTML in loop:

    <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>

    contro

    <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>

    Speriamo che il mio esempio è sufficiente per dimostrare che una volta che si dispone di diversi livelli di cicli annidati, e il rientro è gettato fuori da tutti i PHP aprire/chiudere i tag e il contenuto HTML (e forse avete rientro di HTML in un certo modo per ottenere la vostra pagina nel modo che si desidera), il sintassi alternativa (endforeach) modulo può rendere le cose più facile per il vostro cervello per analizzare. Con lo stile normale, chiusura } possono essere abbandonati a loro stessi e rendono difficile dire ciò che si sta effettivamente chiusura.

    • Se si dispone di staffa di corrispondenza, quindi è più facile vedere le { } anche in mezzo a un sacco di HTML. Anche se forse è più facile per i progettisti, ma la maggior parte degli strumenti di supporto evidenziato staffa di corrispondenza.
    • Concordato, @phazei, se non si utilizza un editor che le partite le staffe, si utilizza l’editor errato.
    • Buona risposta. Promuovere utilizzando il modulo alternativo in modelli. È molto più pulito e meno conflitti con la lingua è stato iniettato. Basandosi sul vostro IDE per rendere il vostro disordinato più leggibile il codice non è davvero accettabile. In definitiva però io ho sempre visto questo dibattito come un’estensione del rinforzo dibattito, e questa forma alternativa è approssimativamente equivalente a Allman stile en.wikipedia.org/wiki/Indent_style#Allman_style, con il pareggio per gli occhi blocchi di codice che presenta. Se non si ottiene o comprendere i vantaggi di Allman, è probabile che di solito ottenere i benefici di questa operazione.
    • Credo che ti sei perso il segno del dollaro a $azione variabile che restituisce il valore per il browser. Ecco l’ultima action dovrebbe essere $action <option value="<?= $action ?>"><?= action ?>
  2. 25

    È l’istruzione end per il sintassi alternativa:

    foreach ($foo as $bar) :
        ...
    endforeach;

    Utile per rendere più leggibile il codice, se hai la rottura di PHP:

    <?php foreach ($foo as $bar) : ?>
        <div ...>
            ...
        </div>
    <?php endforeach; ?>
    • Qual è il vantaggio di scrivere utilizzando la sintassi alternativa?
    • per rendere il codice più leggibile se si sta rompendo PHP
  3. 6

    come una sintassi alternativa è possibile scrivere foreach loop come

    foreach($arr as $item):
        //do stuff
    endforeach;

    Questo tipo di sintassi è in genere utilizzato quando il php viene utilizzato come un linguaggio di template come tale

    <?php foreach($arr as $item):?>
        <!--do stuff -->
    <?php endforeach; ?>
  4. 3

    È solo una sintassi diversa. Invece di

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

    Si potrebbe scrivere questo:

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

    Funzioneranno esattamente la stessa, è solo una questione di stile. (Personalmente non ho mai visto nessuno usare la seconda forma.)

    • Il secondo modulo è utilizzato molto di più quando il PHP è utilizzato nei modelli dove c’è il 95% HTML e solo una spolverata di PHP strutture di controllo e echos.
    • Personalmente non ho mai visto nessuno usare # come operatore di commento in PHP… 😉
    • bene, qual è il vantaggio del secondo modulo? Non riesco a capire. A me sembrerebbe più semplice utilizzare {..}
    • Zing! +1
    • Io non sarei in grado di dire cosa <?php } ?> in chiusura.
    • è un altro esempio di sintassi alternativa disseminato all’interno di PHP. Che odio!
    • Ho visto un bel po’, dato che la sintassi del PHP, prende in prestito un sacco da Perl, è comune per i programmatori Perl per utilizzare esso. (# è l’unico commento token in Perl.) @Jason: Solo questo particolare, commento sintassi è molto più prominente. (In realtà è documentato per esempio.)
    • Che spiega anche perché <?php } ?> non farti scappare urlando poi. 😉
    • Probabilmente spiega anche la mia avversione per verbose lingue come il VB (o di qualsiasi BASE, ma soprattutto VB) e Pascal.

  5. 3

    Che ne dici di questo?

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

    Possiamo ancora usare il più ampiamente utilizzato parentesi graffe e, allo stesso tempo, migliorare il livello di leggibilità.

  6. 2

    Utilizzando foreach:endforeach; non solo rendere il tutto leggibile, ma rende anche meno carico per la memoria, come introdotto in PHP docs
    Così per le grandi applicazioni, ricevendo molti utenti questa sarebbe la soluzione migliore

  7. -3

    Come?

    <?php
        while($items = array_pop($lists)){
            echo "<ul>";
            foreach($items as $item){
                echo "<li>$item</li>";
            }
            echo "</ul>";
        }
    ?>
    • Di solito l’IDE non riconoscere che le stringhe contengono HTML e non in guardia circa non corrispondenti al tag.

Lascia un commento