2017-09-06 2 views
1

Also habe ich diesen Code in PHP, einige Daten aus der Datenbank abrufen und auf der Seite anzeigen, aber ich möchte es nur anzeigen, wenn die Tabelle nicht leer ist.Wie würde ich einige Code in Funktionen umgestalten?

Das ist, was ich jetzt haben (alle Frage Etiketten fest einprogrammiert sind, sie kommen nicht aus dem DB):

<?php  

foreach ($answers as $a) { 
    if ($a->q2 != '') { 
     echo "<span class='question'>Question title?</span><span class='answer'>" . $a->q2 . '</span><br />'; 
    } 

    if ($a->q3 != '') { 
     echo "<span class='question'>Question label 2?</span><span class='answer'>" . $a->q3 . '</span><br />'; 
    } 

    if ($a->q4 != '') { 
     echo "<span class='question'>Another question label?</span><span class='answer'>" . $a->q4 . '</span><br />'; 
    } 

    if ($a->q5 != '') { 
     echo "<span class='question'>Quesiton label?</span><span class='answer'>" . $a->q5 . '</span><br />'; 
    } 

    if ($a->q6 != '') { 
     echo "<span class='question'>Quesiton label?</span><span class='answer'>" . $a->q5 . '</span><br />'; 
    } 
} 

Ich habe insgesamt 19 Fragen, und ich glaube nicht, das ist der beste Ansatz dafür, wie kann ich es in einer Funktion tun?

Antwort

1

In der Tat gibt es Code hier dupliziert, so ist es eine gute Idee zu versuchen, es zu beseitigen.

Sie könnten tun:

function askQuestion($data, $question){ 
    if($data !='') { 
    echo "<span class='question'>$question</span><span class='answer'>".$data.'</span><br />'; 
    } 
} 

und verwenden Sie es mögen:

foreach ($answers as $a) { 
    askQuestion($a->q2, "Question title?"); 
    askQuestion($a->q3, "Question label 2?"); 
    // and so on 

Und als Faustregel: Wenn Sie sind dabei Code refactore, vergessen Sie nicht, Setzen Sie zuerst Nicht-Regressionstests ein (weil es zu schade wäre, den Code zu brechen, wenn wir versuchen, ihn zu verbessern).

Letzter Hinweis: Wenn Sie regelmäßig mit Legacy-Codebasen arbeiten müssen, lesen Sie bitte Working Effectively with legacy code, die eine Menge praktischer Tipps enthält, um solche Codebasen einfacher zu machen.

+0

Danke Mann, alles funktioniert gut, und danke für den Ratschlag :) – Radu033

Verwandte Themen