Expression typesPodręcznik PHPPoprzedniDodatek C. Migrating from PHP/FI 2 to PHP 3NastępnyExpression 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:
$a[0]=5;
$a[1]=7;
$key = key($a);
while ("" != $key) {
echo "$keyn";
next($a);
}
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 != "") {
PoprzedniSpis treściNastępnywhile syntaxPoczątek rozdziałuError messages have changed
Wyszukiwarka
Podobne podstrony:
migration exprmigration exprmigration4 parsermigration booleval2006 regulatory mechanism of gene expr ABPmigration startendtagsmigration if endifmigration4 missingmigrationmigration4 extensionsmigration4migrating globusmigration4 extensionsmigration whilewięcej podobnych podstron