Problem in einer Berechnungsformel

  • Hallo!

    Bin gerade am Verzweifeln!

    Es geht hierbei um eine Formel in einem Fussballspiel. Aufgrund eines Fussballergebnis, soll mir ein bestimmter Wert namens Stimmung berechnet werden:
    Gewinnt ein Team, steigt die Stimmung, verliert es, fällt die Stimmung.

    Hier die Formel:

    $torbilanz = $ergebnis->heim_tore - $ergebnis->aus_tore;
    switch($torbilanz)
    {
    case $torbilanz > 0:
    // Sieg
    $heim_ms->setfanstimmung($heim_ms->getfanstimmung() + 1);
    break;
    case $torbilanz < 0:
    // Niederlage
    $heim_ms->setfanstimmung($heim_ms->getfanstimmung() - 1);
    break;
    }

    Das Ganze funktioniert auch wunderbar, solange eine Mannschaft gewinnt oder verliert. Sobald aber ein Unentschieden herauskommt, also torbilanz = 0 ist, erkennt das System diesen Wert nicht und holt sich einfach die nächstliegende Berechnung.
    In diesem Fall sagt er also "Sieg".

    Ich habe vieles ausprobiert! Grundsätzlich kann das scipt mit torbilanz = 0 nichts anfangen!

    Hoffe sehr auf Hilfe!
    Danke!

    scabinho

  • PHP
    $torbilanz = $ergebnis->heim_tore - $ergebnis->aus_tore;
    if($torbilanz > 0)
            // Sieg
            $heim_ms->setfanstimmung($heim_ms->getfanstimmung() + 1);
    else if($torbilanz < 0)
            // Niederlage
            $heim_ms->setfanstimmung($heim_ms->getfanstimmung() - 1);

    Darf man Fragen, warum du hier ein switch-case-Kontrukt anstelle eines if-else-Konstrukts verwendet hast?

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • case torbilanz == 0 habe ich bereits probiert! Kommt das gleiche heraus!

    Warum switch/ case statt if, kann ich nicht mehr sagen! Aber auch mit if komme ich nicht zum gewünschten Ergebnis.

  • Switch-Case ist im Normalfall (also bei jeder mir bekannten Sprache, außer PHP rein für eine Auswahl gedacht. Also eine Variable auf feste Werte zu prüfen.

    Bei meinem Code passiert bei 0 einfach garnichts.
    Dann muss der Fehler woanders liegen.

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Switch-Case ist im Normalfall (also bei jeder mir bekannten Sprache, außer PHP rein für eine Auswahl gedacht. Also eine Variable auf feste Werte zu prüfen.

    Bei meinem Code passiert bei 0 einfach garnichts.
    Dann muss der Fehler woanders liegen.


    Dodo:
    Ich bin nun doch nochmal auf "if" umgestiegen und nun funktioniert es! Danke! Auch akzeptiert er jetzt "torbilanz=0", was bei "switch-case" nicht der Fall war!

    Das "else" in deinem Code ist im Übrigen nicht notwendig!

    Danke an Alle!

    gruss,
    scabinho

  • Ich weiß, dass das else nicht notwendig ist.
    Aber es ist logisch korrekt und gehört zum guten Programmierstil ;)

    PS: Es heißt "$torbilanz==0", wenn du einen Vergleich amchen willst. "$torbilanz=0" wäre eine normale Wertzuweisung.

    Something big is coming. And there will be pirates and ninjas and unicorns...