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
: