Typy v²raz∙

PHP/FI 2.0 pou╛φvalo levou stranu v²raz∙ k urΦenφ, jakΘho typu mß v²sledek b²t. PHP 3.0 bere pro urΦenφ typu v ·vahu ob∞ strany v²razu, a to m∙╛e zp∙sobit nep°edvφdatelnΘ chovßnφ 2.0 skript∙ v PHP 3.0.

Uva╛ujme tento p°φklad:

$a[0]=5;
$a[1]=7;

$key = key($a);
while ("" != $key) {
    echo "$keyn";
    next($a);
}

V PHP/FI 2.0 by to zobrazilo ob∞ hodnoty v $a. V PHP 3.0 se v╣ak nezobrazφ nic. D∙vod je ten, ╛e PHP 2.0 kv∙li tomu, ╛e na levΘ stran∞ je °etezec, provede porovnßnφ °et∞zc∙, a "" se nerovnß "0", tedy se bude prochßzet cyklem. V PHP 3.0 se °et∞zec porovnß s cel²m Φφslem (integer), provede se porovnßnφ cel²ch Φφsel (°et∞zec je p°eveden na celΘ Φφslo). V²sledkem je porovnßnφ atoi(""), co╛ je 0, a variablelist, co╛ je takΘ 0. A proto╛e 0==0, cyklem se v∙bec prochßzet nebude.

Oprava pro tento p°φklad je snadnß. Nahra∩te p∙vodnφ konstrukci tφmto:

while ((string)$key != "") {