Tipos de expresiones
PHP
/
FI
2.0
usó
el
lado
izquierdo
de
las
expresiones
para
determinar
de
qué
tipo
debía
ser
el
resultado
.
PHP
3.0
toma
ambos
lados
en
cuenta
cuando
determina
el
tipo
de
resultado
,
y
eso
puede
producir
resultados
impredecibles
si
ejecuta
guiones
2.0
en
3.0
.
Considere
este
ejemplo
:
En PHP/FI 2.0, esto mostraría los dos índices de $a. En PHP 3.0,
no muestra nada. El motivo es que en PHP 2.0, al ser el argumento
izquierdo de tipo cadena, se comparaba cadenas, y puesto que
ciertamente
""
no es igual a
"0"
, el bucle continúa. En PHP 3.0, cuando se compara una cadena con
un entero, se realiza una comparación de enteros (la cadena es
convertida a entero). Esto es comparar entonces
atoi("")
que es
0
, y
variablelist
que tambien es
0
, y como
0==0
, el bucle no avanzará.
La
solución
a
esto
es
simple
,
reemplaze
la
declaración
while
con
: