La comparaison surprenante de PHP entre 0 et les chaînes
L'évaluation par PHP de 0 comme égal à une chaîne découle du comportement de son opérateur de comparaison. Lors de l'utilisation de == à des fins de comparaison, PHP convertit les types de données pour qu'ils soient compatibles. Dans ce cas, 0 (un entier) est converti en chaîne, ce qui lui permet d'être comparé à la chaîne « e ».
Cependant, ce comportement devient incohérent lorsque le prix est explicitement fixé à 0. L'évaluation erratique peut être attribué à la différence subtile entre == et ===. == effectue la conversion de type, tandis que === vérifie l'égalité stricte, y compris le type de données.
L'utilisation de === garantit que la comparaison est basée sur les valeurs de données réelles, y compris leurs types. Dans le code fourni, remplacer == par === évaluera correctement 0 comme différent de « e » lorsque le prix est défini sur 0.
Remarques sur les modifications de version PHP :
En PHP 8, le comportement de comparaison a changé. Lors de la comparaison de chaînes numériques à des nombres, PHP utilise désormais la comparaison numérique. Sinon, PHP convertit les nombres en chaînes avant de faire la comparaison.
Exemple de code avec === :
$item['price'] = 0; /* Code to get item information goes in here */ if($item['price'] === 'e') { $item['price'] = -1; }
Avec cette correction, le code déterminera avec précision si le prix est censé être 0 ou un échange « e », garantissant une bonne gestion du prix de l'article.
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!