Simple Frage

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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...

    Comment


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

      Comment


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

        Comment


        • #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)?

          Comment


          • #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.

            Comment

            Working...
            X