PHP/FI 2.0 usaba el lado izquierdo de las expresiones para
determinar el tipo del resultado. PHP 3.0 toma ambos lados en
cuenta cuando determina los tipos del resultado, y esto puede
producir comportamientos impredecibles si ejecuta scripts 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 mostrarÃa nada. La razón es que en PHP
2.0, al ser el argumento izquierdo de tipo cadena, se realizaba una
comparación de cadenas, y ciertamente
""
no es igual a
"0", y el ciclo 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 resulta en la comparación
de
atoi("") que es
0, y
lista_de_variables que
también es
0, y dado
que
0==0, el ciclo no avanzará ni una
sola vez.
La solución a esto es simple. Reemplace la sentencia while
con: