En PHP, comparer une chaîne à un entier peut donner des résultats inattendus. Plus précisément, comparer une chaîne contenant uniquement des chiffres à l'entier 0 peut être évalué comme vrai, même si cela semble incorrect.
Explication du comportement
Comme indiqué dans le PHP Manuel, lorsqu'une chaîne est évaluée dans un contexte numérique, elle est convertie en nombre en fonction des caractères qu'elle contient. Si la chaîne contient un point décimal, un exposant ou un format numérique valide, elle est évaluée comme un flottant. Cependant, s'il ne contient que des chiffres, il est évalué comme un entier.
Dans le cas de la chaîne "d85d1d81b25614a3504a3d5601a9cb2e", elle ne contient que des chiffres. Par conséquent, lorsqu'elle est comparée à l'entier 0, la chaîne est d'abord convertie en entier 0, ce qui donne une véritable comparaison.
Pourquoi la deuxième chaîne ne fonctionne pas
La deuxième chaîne, "3581169b064f71be1630b321d3ca318f", ne fonctionne pas car elle contient un caractère non numérique, "b." Par conséquent, lorsqu’il est évalué dans un contexte numérique, il n’est pas considéré comme un format numérique valide. Au lieu de cela, il est évalué comme une chaîne et la comparaison avec l'entier 0 est évaluée comme fausse.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!