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

Read 3 comments

  1. 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. 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