Maison > développement back-end > tutoriel php > Pourquoi la comparaison d'une chaîne à 0 en PHP renvoie-t-elle parfois vrai et parfois faux ?

Pourquoi la comparaison d'une chaîne à 0 en PHP renvoie-t-elle parfois vrai et parfois faux ?

Patricia Arquette
Libérer: 2024-12-07 16:23:12
original
407 Les gens l'ont consulté

Why Does Comparing a String to 0 in PHP Sometimes Return True and Sometimes Return False?

Comprendre la curieuse comparaison entre une chaîne et un entier

De nombreux programmeurs sont intrigués par le comportement du code PHP suivant :

$test1 = "d85d1d81b25614a3504a3d5601a9cb2e";
$test2 = "3581169b064f71be1630b321d3ca318f";

if ($test1 == 0)
  echo "Test 1 is Equal!?";
if ($test2 == 0)
  echo "Test 2 is Equal!?";
Copier après la connexion

Étonnamment, ce code affiche "Le test 1 est égal !?" seulement. Pourquoi cela se produit-il ?

Comparaison lâche et conversion de chaîne en nombre

La clé pour comprendre ce comportement réside dans le mécanisme de comparaison lâche de PHP. Lors de la comparaison d'une chaîne à un entier à l'aide de l'opérateur ==, PHP tente de convertir la chaîne en nombre.

Selon le manuel PHP, la conversion d'une chaîne en nombres suit ces règles :

  • Si la chaîne contient un point décimal, un exposant ou un caractère « e », elle est interprétée comme un flottant.
  • Sinon, elle est interprétée comme un entier.

Dans le cas de $test1, la comparaison $test1 == 0 évalue la chaîne $test1 comme un entier, ce qui donne 0. Ainsi, elle satisfait à la condition d'égalité et produit " Le test 1 est égal !?"

Exception à la règle

Cependant, dans le Dans le cas de $test2, la conversion de l'entier échoue car elle contient un caractère non valide, « b ». En conséquence, PHP convertit $test2 en 0 dans le contexte entier, rendant la comparaison $test2 == 0 fausse.

Conclusion

L'incohérence apparente dans la comparaison des chaînes en nombres entiers est résolu en comprenant les règles de comparaison lâches de PHP et son mécanisme de conversion chaîne en nombre. Lors de la comparaison de chaînes à 0, les règles de conversion dictent si la comparaison sera vraie ou 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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal