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:
$a[0]=5;
$a[1]=7;
$clave = key($a);
while ("" != $clave) {
echo "$clave";
next($a);
}
La solución a esto es simple. Reemplace la sentencia while con:
while ((string)$clave != "") {