Ausdruckstypen
PHP/FI 2.0 benutzte die linke Seite von Ausdrücken, um herauszufinden, wie das
Ergebnis aussehen soll. PHP 3.0 zieht beide Seiten in Betracht um den Ergebnistypen
zu bestimmen. Dies kann bei 2.0 Scripts dazu führen, sich in 3.0 unerwartet zu
verhalten.
Betrachten Sie dieses Beispiel:
In PHP/FI 2.0 würde dies beide Kennziffern von $a anzeigen. In PHP
3.0 würde gar nichts angezeigt werden. Der Grund ist, dass in PHP 2.0,
aufgrund des "linken" Arguments des Strings, ein Vergleich des Strings
gemacht wurde,
"" ist in der Tat nicht das selbe
wie
"0", was dazu führt, dass die Schleife durchläuft.
Wenn man in PHP 3.0 einen String mit einem Integer vergleicht, so wird ein Vergleich zweier Interger vorgenommen
(der String wir in einen Integer umgewandelt). Dies führt dazu, dass
atoi(""), was
0 ist, und
variablelist, was genauso
0 ist, vergleichen werden. Und weil
0==0, würde die
Schleife nicht ein einziges Mal durchlaufen.
Dies zu reparieren ist einfach. Ersetzen Sie das While-Statement mit: