Baba: ... find ich doof. Wer noch? [php Vergleichsoperator]

$var = "";  
if(is_null($var)) echo "is null<br>";  
  
$var = null;  
if($var == "") echo "is empty string<br>";

erzeugt:

is empty string

statt

Cheers,
Baba

  1. [latex]Mae  govannen![/latex]

    $var = "";

    if(is_null($var)) echo "is null<br>";

    $var = null;
    if($var == "") echo "is empty string<br>";

    
    >   
    > erzeugt:  
    > > is empty string  
    > statt  
    > >  
      
    Tja, mit dem passenden (typvergleichenden) Operator wäre das nicht passiert ;)  
      
      
    Stur lächeln und winken, Männer!  
    Kai  
    
    -- 
    `var jQuery = $(hit);`{:.language-javascript}  
    Wir sind die Schlumpf. Widerschlumpf ist schlumpflos. Wir werden Sie einschlumpfen.  
      
    [SelfHTML-Forum-Stylesheet](http://selfhtml.knrs.de/#h_stylesheet)  
    
    
  2. erzeugt:

    is empty string
    statt

    Vorweg, null,"",0, unter Umständen auch "0" wird von PHP teilweise als false interpretiert.
    Bei deinem Beispiel ist es so, dass 2 verschiedene Datentypen vorliegen und PHP einen der beiden Werte umwandeln muss um vergleichen zu können.

    Wenn du $var = null setzt und mit "" vergleichst, ist das der Fall. Um das zu umgehen müsstest du typsicher vergleichen, also den "==="-Operator verwenden.

    Kleines Beispiel:

    <?php  
    	var_dump("",null,""==null,""===null,0,false,0==false,""==0,""===0);  
    	if("0")  
    		print "\n\"0\" wird als true interpretiert.";  
    	else  
    		print "\n\"0\" wird als false interpretiert.";  
    ?>
    

    gibt folgendes aus:

    string(0) ""  
    NULL  
    bool(true)  
    bool(false)  
    int(0)  
    bool(false)  
    bool(true)  
    bool(true)  
    bool(false)  
      
    "0" wird als false interpretiert.
    

    MfG
    bubble

  3. Tja, mit dem passenden (typvergleichenden) Operator wäre das nicht passiert ;)

    Stimmt ja. Automatische Typumwandlung. This is not a bug, it's a feature.

    Vielen Dank für den Hinweis euch beiden.

    Cheers,
    Baba

    1. Tach!

      Automatische Typumwandlung. This is not a bug, it's a feature.

      Das ganze in Tabellenform: PHP type comparison tables

      dedlfix.