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: