Der Martin: Brett vorm Kopf. Finde den Fehler nicht.

Beitrag lesen

Hallo Joachim,

$a = 42.02;
$b = 146.18;
$c = 188.20;

if($a + $b > $c) {
    echo("a+b ist größer als c
    <br>a: ".$a."
    <br>b: ".$b."
    <br>c: ".$c);
} else {
  echo "<br>equal";
}

$a = settype($a, 'float');
$b = settype($b, 'float');
$c = settype($c,'float');

if($a + $b > $c) {
    echo("a+b ist größer als c
    <br>a: ".$a."
    <br>b: ".$b."
    <br>c: ".$c);
} else {
  echo "<br>equal";
}

Er ergibt:

a+b ist größer als c
a: 42.02
b: 146.18
c: 188.20
equal

da wird sowohl der if- als auch der else-Zweig bearbeitet??
Das kann völlig unabhängig von der Bedingung eigentlich nicht sein; da muss noch ein anderer Fehler drinstecken. Irgendein überzähliges Semikolon oder falsch gesetzte Klammern - etwas in der Art.

Gemein wäre etwa sowas:

if (false);
 { echo "false ist doch true!";
 }

Beachte das Semikolon hinter der if-Klammer: Es schließt die if-Anweisung ohne Anweisungsblock ab, der nachfolgende Block in geschweiften Klammern gehört dann nicht mehr zur if-Anweisung. Solche Fehler sind schwer zu finden, weil sie eben keine Syntaxfehler sind.

Ist schon irre. 😀

Vielleicht ist die Erklärung ganz simpel.

Live long and pros healthy,
 Martin

--
Home is where my beer is.
0 47

Brett vorm Kopf. Finde den Fehler nicht.

Joachim
  • php
  1. -1
    Operator
    1. 0
      dedlfix
    2. 0
      Graf Bit
      1. 0
        Der Martin
      2. 0
        Rolf B
        1. 0
          Der Martin
        2. 0

          Float binär darstellen

          Graf Bit
          • datenvisualisierung
          • php
          1. 0
            Rolf B
  2. 0
    Erik K.
  3. 0
    Der Martin
    1. 0
      Joachim
      1. 0
        Der Martin
        1. 0
          Joachim
          1. 0

            Brett vorm Kopf. Finde den Fehler nicht. Oder verstehe settype nicht. :-/

            Joachim
            1. 0
              dedlfix
              1. 0
                Joachim
                1. 0
                  Rolf B
        2. 0
          Joachim
          1. 0
            Der Martin
            1. 0
              Joachim
      2. 0
        encoder
        1. 0
          Rolf B
          1. 0
            encoder
  4. 0
    Rolf B
    1. 0
      Der Martin
      • php
      • selfhtml-wiki
      1. 0
        Rolf B
        1. 0
          Der Martin
          1. 0
            Matthias Apsel
        2. 0
          Matthias Apsel
      2. 0
        Matthias Apsel
        1. 0
          Rolf B
    2. 0
      Joachim
      1. 0
        Joachim
      2. 2
        Der Martin
        1. 0
          Joachim
      3. 2
        Rolf B
        1. 0
          Der Martin
          1. 0
            Matthias Apsel
            • sonstiges
            1. 0
              Rolf B
              1. 0
                Der Martin
        2. 0
          Joachim
          1. 0
            Der Martin
        3. 0
          Tabellenkalk
          1. 0
            Der Martin
            1. 0
              MudGuard
          2. 0
            Rolf B