Mailinglisten-Archive |
Oliver Kummerow schrieb am Mittwoch, den 8. September 1999: > Ich bin immer noch nicht 100% sicher, wie die Leerstrings völlig > richtig abgefragt werden müssen. Ich versuche die verschiedenen > Möglichkeiten aufzulisten. Bitte um Kritik, falls was nicht stimmt. Alle Tests mit PHP 3.0.11: unset($str) $str='' $str=0 $str='0' $str='x' $str=1 empty($str) X X X - - - !empty($str) - - - X X X isset($str) - X X X X X ! isset($str) X - - - - - $str=='' X X X - - - $str!='' - - - X X X $str - - - - X X ! $str X X X X - - $str=true $str=false empty($str) - X !empty($str) X - isset($str) X X Das ist klar, weil true==1 ! isset($str) - - und false=='' $str=='' - X $str!='' X - $str X - ! $str - X $str=array() $str=array('x') empty($str) X - !empty($str) - X isset($str) X X ! isset($str) - - $str=='' - - $str!='' - - $str - X ! $str X - class foo { }; class foo { var $a }; $str=new foo; $trs = new foo; empty($str) X - !empty($str) - X isset($str) X X ! isset($str) - - $str=='' - - $str!='' - - $str - X ! $str X - > Es gibt anscheinend 3 Möglichkeiten: > > 1. if ( empty ( $str ) ) > [...] > Heisst, empty ( $str ) kann alternativ zu !isset ( $str ) eingesetzt > werden. Nur mit !isset($str) kann man sicher testen, ob eine Variable undefiniert ist (und nicht nur einen der false-Werte hat). > 3. if ( $str != "" ) > > Liefert in allen Fällen das gleiche Ergebnis wie unter 1. > > 2. if ( ! str ) > > Ebenfalls das gleiche. Nur kürzer. (!$str) und ($str=='') unterscheiden sich von empty($str), wenn $str='0'! 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 ... Ciao, Martin -- Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://ramsch.home.pages.de/ > PGP: 0xE8EF4F75, 52 44 5E F3 B0 B1 38 26 E4 EC 80 58 7B 31 3A D7
php::bar PHP Wiki - Listenarchive