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` ?

Comment les fonctions `in_array()` et `array_search()` de PHP se comportent-elles avec les valeurs booléennes et le paramètre `$strict` ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-22 18:54:10849parcourir

How Do PHP's `in_array()` and `array_search()` Functions Behave with Boolean Values and the `$strict` Parameter?

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!

Déclaration:
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