|
PHP/FI 2.0 usava il lato sinistro delle espressioni per determinare che tipo il risultato dovrebbe essere. PHP 3.0 prende entrambi i lati in considerazione quando determina i tipi del risultato, e questo può causare un comportamento inaspettato dei script 2.0 in versione 3.0.
Considera questo exampio:
In PHP/FI 2.0, questo visualizzerebbe entrambi gli indici di $a. In PHP 3.0, invece, non visualizzerebbe nulla. Il motivo è che in PHP 2.0, siccome il tipo del'argomento sinistro è una stringa, è stato fatto una paragono tra le stringhe, ed infatti, "" non è uguale a "0", per ciò il ciclo è continuato. In PHP 3.0, quando una stringa è paragonata ad un intero, viene fatto un paragone fra gli interi (la stringa è convertita in intero). Ciò provoca una confrontazione di atoi("") che è 0, e variablelist che è anche 0, e siccome 0==0, il ciclo non passa neanche una volta.La soluzione è semplice. Sostituisci l'espressione while con:
Hosting by: hurra.com
Generated: 2007-01-26 17:56:52