Résultats de comparaison d'une chaîne étrange à un entier
Lors de la comparaison d'une chaîne à un entier, des résultats inattendus peuvent se produire en raison des règles de coercition de type de PHP. Dans l'exemple fourni :
$test1 = "d85d1d81b25614a3504a3d5601a9cb2e"; $test2 = "3581169b064f71be1630b321d3ca318f"; if ($test1 == 0) echo "Test 1 is Equal!?"; if ($test2 == 0) echo "Test 2 is Equal!?";
Le test 1 réussit car la chaîne "d85d1d81..." ne contient aucune donnée numérique valide, elle est donc interprétée comme 0.
Cependant, le test 2 échoue car la chaîne "3581169b..." contient des données numériques valides (le "3581169" initial). Selon les règles de conversion de PHP, cette partie initiale est utilisée pour déterminer la valeur numérique, qui n'est pas 0.
Le manuel PHP explique que les chaînes sont évaluées comme suit :
Dans le cas de $test2 , le "3581169" initial est une donnée numérique valide, donc la valeur n'est pas 0 et la comparaison échoue.
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!