Simple Frage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Simple Frage

    hi

    folgender code gibt bei mir "ja" aus.

    PHP-Code:
    $i 0;
    if (
    $i == "ein String")
        echo 
    "ja"
    ehrlich gesagt hab ich mich ziemlich gewundert. wie kann das sein? $i ist doch ein integer wert oder? wieso gibt der ausdruck true aus, wenn ich es mit einem string vergleiche?

  • #2
    Weil "ein String" in einen integer umgewandelt wird?

    === wäre der geeignete Vergleichsoperator
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      aber wieso wird "ein string" zu 0? wenn "0" zu 0 wird, kann ich es ja verstehen.

      Kommentar


      • #4
        wäre 1 oder 100 in deinen augen logischer?

        Kommentar


        • #5
          hmm naja nicht wirklich.

          eigentlich wäre es dann sinnvoll bei jeder if-abfrage, die zwei gleiche sachen vergleicht den === operator zu nehmen oder (da es ja viele funktionen mit mixed-rückgabewerten gibt)?

          Kommentar


          • #6
            Original geschrieben von chri91
            eigentlich wäre es dann sinnvoll bei jeder if-abfrage, die zwei gleiche sachen vergleicht den === operator zu nehmen
            du vergleichst aber einen int mit einem string. php nimmt automatisch eine typumwandlung vor, aus string 'ein String' wird int 0 und daher ergibt == true.
            wenn du in deinem beispiel mal $i = 0; zu $i = '0'; änderst, ergibt der vergleich nicht mehr true, da jetzt zwei strings verglichen werden.

            so, um die verwirrung jetzt perfekt zu machen, ein int-casting eines strings ergibt nicht immer 0, bsp.: echo (int)'42 ein String'; ergibt int 42 und nicht 0.
            joh, das sind so die eigenarten von php, die man erstmal kennen muss
            daher liegst du mit === eigentlich nie falsch.

            Kommentar

            Lädt...
            X