*ich*: BUG bei == ?!?

Hallo zusammen,

eigentlich ist es mir schon etwas doof, dass zu fragen, aber warum gibt:

var_dump("64190000000000086" == "64190000000000085");

true zurück und nicht false?!?!?

Ich versteh die Welt nicht mehr!

var_dump("64190000000000086" === "64190000000000085"); ergibt übrigens dann false...

Danke für Antworten schon im Voraus.

Gruß

*Ich

PS: Vielleicht hilft es ja. Ich habe es auf einer PHP 5.1.2-1.dotdeb.2 (cli) und auf einer Version 5.1.2 auf Windows ausprobiert.

  1. Hi,

    eigentlich ist es mir schon etwas doof, dass zu fragen, aber warum gibt:
    var_dump("64190000000000086" == "64190000000000085");
    true zurück und nicht false?!?!?

    weil PHP ein bisschen doof ist.

    var_dump("64190000000000086" === "64190000000000085"); ergibt übrigens dann false...

    Exakt. Im ersten Fall wandelt PHP die Werte implizit um - sie ergeben dann beide "6.419E+16". Ich bin ebenfalls der Meinung, dass das Schwachsinn ist. Das (symmetrische) Hinzufügen nicht-nummerischer Zeichen löst das Problem.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi Cheatah,

      danke für deine Antwort!

      weil PHP ein bisschen doof ist.

      Exakt. Im ersten Fall wandelt PHP die Werte implizit um - sie ergeben dann beide "6.419E+16". Ich bin ebenfalls der Meinung, dass das Schwachsinn ist. Das (symmetrische) Hinzufügen nicht-nummerischer Zeichen löst das Problem.

      Was heißt denn: Das symmetrsiche Hinzufügen nicht-numerischer Zeichen?!?!?

      Gruß und ncoh einmal Danke!

      *ich*

      1. echo $begrüßung;

        Was heißt denn: Das symmetrsiche Hinzufügen nicht-numerischer Zeichen?!?!?

        Symmetrisch heißt "auf allen beteiligten Seiten gleichmäßig", und nicht-numerische Zeichen sind alle die, die keine Ziffern sind bzw. das Ergebnis so aussehen lassen, als ob es eine Zahl sei.

        echo "$verabschiedung $name";

    2. Hallo Cheatah,

      Das (symmetrische) Hinzufügen nicht-nummerischer Zeichen löst das Problem.

      Warum so kompliziert? Genau dafür ist doch der Identitätsoperator (===) da.

      Schöne Grüße,

      Johannes

      1. Hi,

        Warum so kompliziert? Genau dafür ist doch der Identitätsoperator (===) da.

        ja, aber das wusste der OP bereits :-)

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes