Typy výrazov

PHP / FI 2.0 využívalo ľavú stranu výrazu pre stanovenie , akého typu by výsledok mal byť . PHP 3.0 započítava obe strany pri stanovovaní typov výsledku , a tento spôsob môže v 2.0 skriptoch spôsobiť , že sa v 3.0 bude správať nepredvídateľne .

Posúďte na tomto príklade :




V PHP/FI 2.0 by toto zobrazilo oba $a indexy. V PHP 3.0 by to nezobrazilo nič. Dôvodom je, že v PHP 2.0, pretože ľavý typ argumentu bol string, sa porovnával string a "" sa rozhodne nerovná "0" , čiže slučka prešla. V PHP 3.0, keď sa porovnáva string s integerom, porovná sa integer (string sa prekonvertuje na integer). To sa prejaví pri porovnávaní atoi("") , ktorý sa rovná 0 , a variablelist , ktorý sa tiež rovná 0 , a pretože 0==0 , slučka už viac neprejde.

Toto sa jednoducho opraviť . Nahraďte príkaz while s :