de.comp.lang.php.* FAQ

6.8. Was ist der Unterschied zwischen isset() und einem Vergleich auf den Leerstring?

Keywords: Variable | Typ

Antwort von Georg Maaß

if($var) evaluiert nur dann zu true, wenn $var keinen der folgenden Werte darstellt: false, 0, 0.0, "" oder "0", NULL, array() oder new stdClass. Alle diese Werte bedeuten false in ihrem jeweiligen Typ (Bool, Integer, Float, String, Null, Array, Object).

if(isset($weiter)) evaluiert immer zu true, wenn $weiter nicht undefined ist.

Im ersten Fall wird der Inhalt, im zweiten Fall die Existenz der Variablen bewertet.

Ein ähnliches Problem tritt bei Vergleichen auf: if($var == false) evaluiert immer dann zu true, wenn $var einen der obigen Werte darstellt. PHP führt hier eine automatische Typenkonvertierung durch, wodurch die beiden Variablen als äquivalent angesehen werden.

Diese Typkonvertierung kann mit den Vergleichsoperatoren === (drei Gleichheitszeichen) und !== vermieden werden. Der Vergleich === ist nur dann wahr, wenn die beiden Operanden den gleichen Typ und den gleichen Wert haben.

Valid HTML 4.01! Valid CSS!

6.8. Was ist der Unterschied zwischen isset() und einem Vergleich auf den Leerstring?
http://www.php-faq.de/q/q-variable-testen.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team