0 == 'abcd' ?

Eléphant du PHP | 65 Messages

30 juil. 2018, 16:34

Bonjour à tous,
J'aimerais votre avis sur ce problème. Je suis assez fatigué aujourd'hui du coup j'ai du mal à réfléchir donc je m'excuse si c'est un truc tout bête que je n'ai pas compris :oops:

Code : Tout sélectionner

<?php var_dump( PHP_VERSION, // 7.2.3 0 == 'abcd' // true );
Pouvez-vous m'expliquer ?
Merci !

Mammouth du PHP | 1967 Messages

31 juil. 2018, 08:53

Je pense que comme le premier membre de la comparaison est un entier, la conversion de lachaine de caractère en entier donne null et donc 0 == null => true
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

05 août 2018, 23:15

Et voilà pourquoi, il faut toujours utiliser 3 signes égales pour faire une comparaison stricte, uniquement avec 2 signes tu as du transtypage donc pour des cas spécifiques ça ne fonctionne pas comme la logique le voudrait.

Tu as un résumé de plein de cas étranges ici :
http://php.net/manual/fr/types.comparisons.php
Quand tout le reste a échoué, lisez le mode d'emploi...