... find ich doof. Wer noch? [php Vergleichsoperator]
Baba
- php
$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
[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)
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
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
Tach!
Automatische Typumwandlung. This is not a bug, it's a feature.
Das ganze in Tabellenform: PHP type comparison tables
dedlfix.