if (($x != false) == true && $x)

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

  • if (($x != false) == true && $x)

    Hi,

    wie der Betreff andeutet, geht es um die Auswertung von Ausdrücken. Recht häufig stolpere ich in Code über Anweisungen der Art if ($foo != false). Weshalb reicht nicht if ($foo) ? Ist diese Schreibe der Ansicht des Coders geschuldet, die Leserlichkeit würde erhöht oder gibt es sprachspezifische Gründe?


    Vorab schon vielen Dank, string

  • #2
    http://de2.php.net/manual/en/languag...e-juggling.php
    http://de2.php.net/manual/en/languag...oolean.casting
    http://de2.php.net/manual/en/languag...comparison.php

    man programmiert, btw., nicht für eine maschine, der es wurscht sein kann, ob if ($foo) oder if ($foo != false) steht, sondern für das arme schwein, das in nach einiger zeit das ganze entziffern muss (meistens man selbst). ein mensch kann zweiteres besser erkennen und interpretieren.

    ich persönlich würde if (false !== $foo) verwenden, um casting-fehler zu vermeiden. kommt halt drauf an, ob das die selbe semantik hat oder nicht.

    grüße
    axo

    Kommentar


    • #3
      Ist diese Schreibe der Ansicht des Coders geschuldet, die Leserlichkeit würde erhöht oder gibt es sprachspezifische Gründe?
      imho
      PHP-Code:
      if($foo
      //entspricht
      if(isset($foo)) 
      Es wird also nicht der Wert abgefragt, sondern nur ob die Var gestzt ist (kann auch '' sein)
      Während dem bei
      PHP-Code:
      if($foo === false
      der Wert der Variable abgefragt und verglichen wird
      Also
      PHP-Code:
      $foo '';
      if(
      $foo// müsste true sein
      if($foo === false// müsste false sein 
      Gruss

      tobi
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        Original geschrieben von jahlives
        PHP-Code:
        if($foo
        //entspricht
        if(isset($foo)) 
        Es wird also nicht der Wert abgefragt, sondern nur ob die Var gestzt ist (kann auch '' sein)
        Da gehts schon los ...

        $foo = false;
        if ($foo)
        wird nicht wahr, obwohl $foo sehr wohl gesetzt ist und isset($foo) zu true evaluieren würde!

        Kommentar


        • #5
          Hi,

          das ist mal wieder ein schönes beispiel für php's principle of most
          surprise !

          Die genialen sprachdesigner wussten eben, dass sie es mit
          ubercodern als clientel zu tun haben würden, denen solche
          spitzfindigkeiten über die langeweile beim coden hinweghelfen.

          greets
          (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

          Kommentar


          • #6
            Noch ein nützlicher Link. Ich dachte bis jetzt immer dass isset($foo) und if($foo) genau dasselbe ist.
            http://us2.php.net/manual/en/types.comparisons.php

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              http://us2.php.net/manual/en/types.comparisons.php
              Die Tabelle gab Aufschluß. if($foo) == if($foo != false)


              Gruß, string

              Kommentar

              Lädt...
              X