Zero, c’est la tête à toto

C’est pas moi qui le dit, c’est PHP.

La preuve :

var_dump(0 == "toto");

Voir ça sur codepad

2 commentaires ↓

#1 jeanphi on 02.07.10 at 14:54

Ce comportement est normal.

l’opérateur ==
transtype “toto” en integer pour pouvoir le comparer à l’integer 0 placé à gauche de l’opérande
hors : (integer)(”toto”); donne 0
donc 0 === (integer)(”toto”);

il fallait tester le type donc var_dump(0 === “toto”);

qui retourne bien (boolean)false;

#2 Stéphane on 02.09.10 at 12:09

Bien sur que ce comportement est normal, toujours est-il qu’il est surprenant. A noter que la condition inverse retourne true aussi :) Le meilleur moyen de faire des comparaisons reste en effet d’utiliser le triple opérateur qui tient compte aussi du typage dans la comparaison.

Laisser un commentaire