Maison > développement back-end > tutoriel php > Pourquoi `in_array()` renvoie-t-il True pour une valeur inexistante en PHP ?

Pourquoi `in_array()` renvoie-t-il True pour une valeur inexistante en PHP ?

Barbara Streisand
Libérer: 2024-12-22 11:45:09
original
223 Les gens l'ont consulté

Why Does `in_array()` Return True for a Non-Existent Value in PHP?

Comportement particulier d'un tableau avec VÉRITÉ

La fonction in_array() de PHP présente un comportement inattendu lorsque vous travaillez avec un tableau contenant le booléen VRAI.

Considérons ce qui suit array:

$arr = [TRUE, "some string", "something else"];
Copier après la connexion

Étonnamment, in_array("test", $arr) renvoie true, même si "test" n'est pas dans le tableau. Le même résultat inhabituel se produit avec array_search("test", $arr), qui renvoie 0.

Ce comportement n'est pas un bug, mais une fonctionnalité bien documentée.

Strictement Parler : Comprendre le troisième paramètre

in_array() et array_search() possèdent tous deux un troisième paramètre facultatif, $strict, qui est par défaut FAUX.

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ])
Copier après la connexion

Cela signifie que, par défaut, les deux fonctions utilisent une comparaison lâche (==). Ils évaluent les valeurs uniquement sur la base de leur égalité, sans tenir compte de leurs types. Par conséquent, dans l'exemple donné, TRUE == "any non-empty string" renvoie true en raison de la jonglerie de types.

Application de la rigueur : définition de $strict sur TRUE

Pour garantir des comparaisons précises, vous pouvez définir $strict sur TRUE. Cela oblige PHP à utiliser une comparaison stricte (===), vérifiant à la fois la valeur et le type des valeurs qu'il compare.

$result = in_array("test", $arr, TRUE);
var_dump($result); // Output: bool(false)
Copier après la connexion

Dans ce cas, in_array() renvoie correctement false, comme prévu.

N'oubliez pas que comprendre les nuances de la jonglerie de types et le rôle de $strict est crucial lors de l'utilisation de in_array() et array_search(). Ces fonctions offrent de puissantes capacités de recherche, mais leur comportement peut être imprévisible si ces subtilités sont négligées.

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