Expression types  PHP/FI 2.0 used the left side of expressions
to determine what type the result should be. PHP 3.0 takes both
sides into account when determining result types, and this may
cause 2.0 scripts to behave unexpectedly in 3.0.  Consider this
example:   $key = key($a); while ("" != $key) {     echo
"$keyn";  In PHP/FI 2.0, this would display both of $a's
indices. In PHP 3.0, it wouldn't display anything. The reason is
that in PHP 2.0, because the left argument's type was string, a
string comparison was made, and indeed "" does not equal "0",
and the loop went through. In PHP 3.0, when a string is compared
with an integer, an integer comparison is made (the string is
converted to an integer). This results in comparing atoi("")
which is 0, and variablelist which is also 0, and since 0==0,
the loop doesn't go through even once.  The fix for this is
simple. Replace the while statement with:  while ((string)$key
!= "") {