Mailinglisten-Archive |
Hallo Martin, Nochmal vielen Dank für die hochinteressante Antwort! Die pefekte Matrix - die mußte ich mir erstmal ausdrucken. Immerhin bin ich beruhigt, dass ich mich nicht getäuscht habe bei den Fällen, die ich untersucht hatte. Allerdings hatte ich einiges vergessen. In den Fällen, dass es nur um eine TRUE/FALSE-Auswertung bei einfachen Variablen geht, funktionieren also empty($str), !$str, $str=="", $str==FALSE und vice versa identisch. (ich habe mir mal erlaubt, die Reihen etwas umzustellen, damit die negative Evaluation immer oben ist). unset($str) $str='' $str=0 empty($str) X X X !empty($str) - - - $str=='' X X X $str!='' - - - ! $str X X X $str - - - $str=true $str=false empty($str) - X !empty($str) X - $str=='' - X $str!='' X - ! $str - X $str X - > Alle Tests mit PHP 3.0.11: dito. > Nur mit !isset($str) kann man sicher testen, ob eine Variable > undefiniert ist (und nicht nur einen der false-Werte hat). Yepp. Aber empty kassiert den Fall mit ein = Obermenge. > Das Beispiel mit dem leeren Array und den Objekten zeigt zudem, daß > dann weder =='' noch !='' gilt. > > Im Detail hingeschaut ist es ziemlich verwirrend. Man muß ganz genau > überlegen, ob der Test als String oder als Zahl stattfindet und wie > impliziete Konvertierungen aussehen ... Ich würde (ganz milde & vorsichtig) sagen, das ist alles nicht gerade sehr konventionell. PHP macht da sein ureigenes Regelwerk auf. Btw.: Sowas gehört doch eigentlich ins Handbuch, oder? Da stolpert man dauernd drüber... Mit freundlichen Grüßen, Oliver Kummerow email: naklar_(at)_altavista.net
php::bar PHP Wiki - Listenarchive