if-Anweisung und Vergleichsoperatoren

  • da hier mein erster beitrag im forum...erst mal

    Code
    echo "Hello Folks";

    ich stehe bezüglich php noch ziemlich am anfang.:S


    wir gehen mal von aus ich bastel mir ein kleines quiz.

    der teilnehmer klickt sich durch ein affenformular und beantwortet fragen mit ja und nein.

    dabei werden seine fehler mitgezählt und gespeichert.

    soweit kein problem.

    jetzt wär's zeit für die auswertung.


    ich hatte mir das ganz etwa so gedacht:

    (mal etwas vereinfacht, um's nicht unnötig kompliziert zu machen) 8o

    wenn ich jetzt beim abtippen keine fehler gemacht hab, sollte der spass so funktionieren und sollte als rang natürlich 1 ausgeben.


    aber...geht das nicht auch eleganter?:/


    Edit:

    die fehlerzahlen für die ränge sind in variablen, da diese errechnet werden anhand der anzahl der quizfragen. quasi: anzahl der fragen / 3 ergibt rang1, anzahl der fragen /3 *2 ergibt rang2, anzahl der fragen ergibt rang3.

  • [offtopic]

    was mir eben aufgefallen ist.

    mir wurde mal erzählt, wenn ich einer variable einen integer wert zuweise, sollte dieser immer in "" stehen.

    z.b.

    Code
    $summe = "4";

    das hab ich mir natürlich=O zu herzen genommen und mittlerweile angewöhnt.

    war das wieder mal nur gefährliches halbwissen, was mir da erzählt wurde?

  • Nur mal als Anregung, da ich denke, dass es sicher später mal Ränge mehr gibt oder man die Grenzen evtl. mal anpasst.

    Um die ganzen if-Bedingungen nicht immer anpassen zu müssen, wäre es vorteilhaft, wenn Du die Rang-Fehlergrenzen in ein Array auslagern würdest, bspw.:

    PHP
    <?php
    $iSum = 4;    // Anzahl gemachter Fehler
    
    $aStages = [
        1 => 5,    // Rang 1
        2 => 10,   // Rang 2
        3 => 15    // Rang 3
    ];

    Dann würde anstelle der ganzen if-Bedingungen nur noch Konstrukt aus Array-Funktionen den Rest erledigen:

    PHP
    <?php
    $iStage = (integer)array_keys(
        array_filter(
            $aStages
            , function($val) use($iSum) {
                return $val >= $iSum;
            }
        )
    )[0];

    In $iStage hast Du dann den entsprechenden Rang.


    Das sieht jetzt auf den ersten Blick etwas komplizierter aus, aber der Vorteil besteht halt darin, dass Du die Ränge und ihre Grenzen beliebig über das Array oben steuern kannst. Eine Änderung an den Array-Funktionen ist nicht notwendig, ganz egal, wie Du die Grenzen verschiebst oder wie viele Ränge Du irgendwann mal hast. Kein Aufblähen von IF-Abfragen oder sonstiges.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!