2017-06-26 2 views
-4

Wie kann ich den Code innerhalb der foreach-Schleife ausführen, wenn ich nur ein Bankkonto habe, unter Vermeidung von doppelten Code?if-Anweisung zu überspringen foreach, aber immer noch Code innerhalb

<?php 
    if($_GET['bank_id']>0){ 
     $id = ($_GET['bank_id']); 
     $bank_account = BankAccounts::find_by_id($id); 
    }else{ 
     $bank_accounts = BankAccounts::find_all(); 
    } 
?> 

    <table class="bordered"> 
     <tr> 
     <th>accounts id</th>  
     <th>accounts name</th> 
     <th>accounts number</th>  
     <th>account</th>  
     </tr> 

    <?php 
    if(isset($bank_accounts)){ 
    foreach($bank_accounts as $bank_account){ 
     ?> 
     <tr> 
     <th><?php echo $bank_account -> bank_accounts_id; ?> </th> 
     <th><?php echo $bank_account -> bank_accounts_name; ?> </th>  
     <th><?php echo $bank_account -> bank_accounts_number; ?> </th> 
     <th><?php echo $bank_account -> bank_account; ?> </th> 
     </tr> 
    <?php 
     } 
     }else{ 
    ?> 
     <tr> 
     <th><?php echo $bank_account -> bank_accounts_id; ?> </th> 
     <th><?php echo $bank_account -> bank_accounts_name; ?> </th>  
     <th><?php echo $bank_account -> bank_accounts_number; ?> </th> 
     <th><?php echo $bank_account -> bank_account; ?> </th> 
     </tr> 
<?php } ?> 
    </table> 
+5

Unterscheiden Sie nicht zwischen '$ bank_account' und' $ bank_accounts'; Haben Sie nur "$ bank_accounts", dann ist ein einzelnes Bankkonto nur eine Liste von Bankkonten mit nur einem Element. Einzelfall == Liste von 1 Element, nicht vollständig separate Logikzweig. – deceze

+0

Ist es nicht ein bisschen radikal zu schließen und jetzt bald diese Frage innerhalb weniger Minuten zu löschen, ohne Zeit zu haben, es zu verbessern? –

+0

@ this.lau_ die Frage wird nicht gelöscht, da es eine upvoted akzeptierte Antwort gibt –

Antwort

1

Wenn Sie nur ein Bankkonto haben, fügen Sie es zu einem Array mit einem Element hinzu. Das erlaubt Ihnen, doppelten Code zu vermeiden und bedeutet 0, 1 oder mehrere Bankkonten werden in einer einheitlichen Art und Weise behandelt:

<?php 
    $bank_accounts = array(); 
    if($_GET['bank_id']>0){ 
    $id = ($_GET['bank_id']); 
    $bank_account = BankAccounts::find_by_id($id); 
    $bank_accounts[] = $bank_account; 
    } else { 
    $bank_accounts = BankAccounts::find_all(); 
    } 
?> 

<table class="bordered"> 
    <tr> 
    <th>accounts id</th>  
    <th>accounts name</th> 
    <th>accounts number</th>  
    <th>account</th>  
    </tr> 

    <?php foreach($bank_accounts as $bank_account): ?> 
    <tr> 
     <th><?php echo $bank_account -> bank_accounts_id; ?> </th> 
     <th><?php echo $bank_account -> bank_accounts_name; ?> </th>  
     <th><?php echo $bank_account -> bank_accounts_number; ?> </th> 
     <th><?php echo $bank_account -> bank_account; ?> </th> 
    </tr> 
    <?php endforeach; ?> 
</table> 

Sehen Sie sich auch foreach/endforeach in HTML-Code verwenden, wie es besser lesbar ist.

+0

Warum nicht einfach '$ back_accounts = [BankAccounts :: find_by_id ($ id)]' '? – deceze

+0

@deceze, im Allgemeinen bevorzuge ich Variablen (zB $ bank_accounts) innerhalb des Umfangs zu definieren, der benötigt wird, um undefinierte variable Probleme zu vermeiden, da der Code komplexer wird. In diesem Fall wäre es tatsächlich äquivalent, Ihre Methode zu verwenden. –

+0

@ this.lau_ danke es hat funktioniert Ich hatte ursprünglich foreach wie du erwähnt hast –

Verwandte Themen