PHP Manuál | ||
---|---|---|
Predchádzajúci | Dodatok D. Migrácia z PHP/FI 2 do PHP 3 | Nasledujúci |
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 určovaní 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, tak 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 dá jednoducho opraviť. Nahraďte príkaz while s:
Predchádzajúci | Domov | Nasledujúci |
while syntax | Hore | Chybové hlásenia sa zmenili |