Maison >développement back-end >tutoriel php >Comment les fonctions `in_array()` et `array_search()` de PHP se comportent-elles avec les valeurs booléennes et le paramètre `$strict` ?
Comprendre le comportement de PHP in_array() et array_search()
Les fonctions PHP in_array() et array_search() peuvent présenter un comportement inattendu lorsque traiter des tableaux contenant des valeurs booléennes. Pour résoudre ces incohérences, il est crucial de comprendre la fonctionnalité inhérente à ces fonctions.
Les deux fonctions ont un troisième paramètre facultatif, $strict, qui est par défaut FALSE. Lorsque $strict est défini sur FALSE, ces fonctions utilisent une comparaison lâche (==) pour évaluer les valeurs. Cela signifie qu'ils vérifient uniquement si les valeurs sont égales, quel que soit leur type.
Par exemple, dans le tableau fourni :
$arr = [TRUE, "some string", "something else"];
Appeler in_array("test", $arr) renvoie TRUE même si "test" n'est pas présent dans le tableau. Cela se produit car TRUE est vaguement égal à « toute chaîne non vide », y compris « test ».
De même, array_search("test", $arr) renverrait 0, indiquant que "test" est trouvé à index 0. En effet, TRUE et "toute chaîne non vide" sont considérés comme égaux par défaut.
Pour garantir des comparaisons précises, il est nécessaire de définir $strict sur TRUE, ce qui force les fonctions pour utiliser la comparaison stricte (===). Une comparaison stricte évalue à la fois la valeur et le type des variables. Par conséquent, lorsque $strict est défini sur TRUE :
in_array("test", $arr, true); // Returns false array_search("test", $arr, true); // Returns -1
En conclusion, le comportement par défaut de in_array() et array_search() peut conduire à des résultats inattendus lorsqu'il s'agit de valeurs booléennes. En définissant le paramètre $strict sur TRUE, vous pouvez appliquer une comparaison stricte, garantissant que les fonctions évaluent à la fois la valeur et le type des variables pour des résultats précis.
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!