Types d'expression
PHP
/
FI
2.0
utilisait
le
membre
à
gauche
dans
les
expressions
,
pour
déterminer
le
type
de
résultat
attendu
.
PHP
3.0
prend
en
compte
les
deux
côtés
de
l
'
expression
et
cela
peut
produire
des
résultats
inattendus
avec
les
scripts
2.0
.
Considérez
les
lignes
suivantes
:
En PHP/FI 2.0, cet exemple va afficher les indices des $a. En PHP
3.0, l'exemple ne va rien afficher du tout. La raison est qu'en
PHP 2.0, puisque l'argument de gauche est de type chaîne, une
comparaison de chaîne était effectuée et, effectivement,
""
n'est pas
""
, ce qui conduit la boucle à continuer. En PHP 3, lorsqu'une
chaîne est comparée avec un entier, la comparaison est de type
chaîne (la chaîne est convertie en entier). Ce qui revient à
faire la comparaison entre (
atoi("")
) qui vaut
0
et la variable qui vaut aussi 0 et comme 0==0, la boucle ne
commence même pas.
La
correction
de
ceci
est
simple
:
il
suffit
de
remplacer
les
commandes
while
par
: