Maison >développement back-end >tutoriel php >Pourquoi `in_array()` renvoie-t-il True pour une valeur inexistante en 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"];
É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 ])
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)
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!