Mailinglisten-Archive |
Marc Logemann wrote: > > >>wenn ich sage: if($test==0) > >>und vorher test nicht definiert habe, warum ist die Bedingung wahr? > > > durch die Bedinung "==0" wird $test als Integer deklariert. Da ihr > > noch kein Wert zugewiesen wurde, ist sie eben =0 > > kann das jemand bestaetigen? Ich mein, warum wird durch eine Vergleichsoperation eine Variablenzuweisung gemacht? Klingt fuer mich ersma komisch. Wie gesagt PHP kennt zwar Typen, ist aber nicht sehr streng bei der Behandlung. Altes BASIC (Beginners all supposed instruction code) Prinzip. Du darfst $test einen Wert zuweisen über '$test = "1"' ($test wird ein String) und '$test = 1' ($test wird ein Integer) und bei beiden Schreibweisen darfst Du hinterher mit $test numerische Operationen durchführen, z.B. '$a = 2*$test'. Warum? Weil PHP $test intern in diversen Repräsentationen speichert u.a. als float, int und char (korrigiert mich hier!). Wenn der Interpreter auf einen Ausdruck trifft wie '$a = 2*$test', wird der Ausdruck in '$a = 2*(int)$test' übersetzt und der gespeicherte Integer Wert von $test verwendet. Trifft der Interpreter auf '$a = "2".$test' wird dies interpretiert wie '$a = "2".(string)$test'. Gleiches geschieht bei einer Bedingung. PHP kümmert sich für Dich um die Typwandlung. Dies nimmt Dir viel Arbeit ab und beseitigt Fehlerquellen. Warum hat (int)$test den Wert 0, obwohl Du $test noch nie vorher benutzt hast? Weil, dies der Wert ist den die meisten Anfänger erwarten würden, wenn sie ohne Vorankündigung eine neue Variable benutzen und als Integer interpretieren. Ulf -- Ulf Wendel NetUSE Kommunikationstechnologie GmbH Siemenswall, D-24107 Kiel, Germany Fon: +49 431 386435 00 -- Fax: +49 431 386435 99
php::bar PHP Wiki - Listenarchive