Typy výrazů

PHP / FI 2.0 používalo levou stranu výrazů k určení , jakého typu 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 :




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 :