Problem mit vergleichen von integern bzw floats

  • Hi,

    habe gerade ein kleines Tool zum ausrechen des BMI erstellt. Das ausrechnen ist nicht das Problem, sondern eher das vergleichen des BMI. Vergleichen muss ich den BMI mit anderen Zahlen, damit ich dem Benutzer des Tools mitteilen kann in welchem Bereich sein BMI liegt.

    Kategorie BMI (kg/m²)

    Starkes Untergewicht < 16 Untergewicht
    Mäßiges Untergewicht 16 – 17
    Leichtes Untergewicht 17 – 18,5
    Normalgewicht 18,5 – 25 Normalgewicht
    Präadipositas 25 – 30 Übergewicht
    Adipositas Grad I 30 – 35 Adipositas
    Adipositas Grad II 35 – 40
    Adipositas Grad III ≥ 40
    Also, zuerst dachte ich, ich vergleiche den BMI mit den Zahlen, die in der oben stehenden Tabelle liegen und das anhand if & elseif Bedingungen.

    zB:

    if($BMI <= 16)
    {
    echo 'starkes Untergewicht';
    }
    else if($BMI >=16 OR $BMI <= 17)
    {
    echo 'Mäßiges Untergwicht';
    }
    else if($BMI >=17 OR $BMI <= 18.5)
    {
    echo 'Leichtes Untergwicht';
    }

    usw usf

    Problem ist ja dann, das wenn jemand 17 BMI hat, die zweite und dritte Meldung ausgegebn wird, da ja beide zutreffen...

    Habe mir paar Sachen überlegt, wie ich das lösen könnte - mir ist bis jetzt die Möglichkeit mit switch und case eingefallen, problem: da kann ich nur mit == Operator arbeiten, sprich, der BMI geht bis 40, brauche also 40 cases - und das zieht ja dann den Code extrem in die länge. Gibts da nen kürzeren Weg?

    MfG,
    Nico

  • Zitat von Nico1994

    Problem ist ja dann, das wenn jemand 17 BMI hat, die zweite und dritte Meldung ausgegebn wird, da ja beide zutreffen...


    Ich wette 1000 Euro das bei $BMI=17; nur die zweite kommt....
    Da Steht nicht

    PHP
    if (1) {
    }
    if (2) {
    }
    if (3) {
    }

    Da steht

    PHP
    if (1) {
    } ELSE if (2) {
    } ELSE if (3) {
    }

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Mal ganz abgesehen davon was Tobse schon geschrieben hat... wie wäre es denn mal einfach wenn du entweder nur < und >= oder nur <= und > verwendest...?

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook