(PHP 4, PHP 5, PHP 7, PHP 8)
in_array — Indique si une valeur appartient à un tableau
Recherche needle dans haystack en utilisant une comparaison
souple à moins que strict ne soit utilisé.
needleLa valeur recherchée.
Note:
Si
needleest une chaîne de caractères, la comparaison est faite en tenant compte de la casse.
haystackLe tableau.
strict
Si le troisième paramètre strict est défini à
true alors la fonction in_array() vérifiera aussi que le type
du paramètre needle
correspond au type de la valeur trouvée dans haystack.
Note:
Antérieur à PHP 8.0.0, un
needlede type string non numérique correspondait de manière lâche à une valeur0dehaystack, et inversement. À partir de PHP 8.0.0, le nombre est converti en string et les deux sont comparés en tant que chaînes ; seule une string numérique de même valeur correspond donc encore.Le mode non strict utilise néanmoins une comparaison lâche, si bien que des valeurs de types différents peuvent toujours être considérées comme égales :
truecorrespond à toute string évaluée à vrai, etfalsecorrespond à la fois à""et à"0". À moins de connaître avec certitude les types de toutes les valeurs concernées, il faut toujours fournirstrictpour forcer une comparaison d'identité.
Exemple #1 Exemple avec in_array()
<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
echo "Got Irix";
}
if (in_array("mac", $os)) {
echo "Got mac";
}
?>La seconde condition échoue, car in_array() est sensible à la casse. Le script retourne :
Got Irix
Exemple #2 Exemple avec in_array() et le mode strict
<?php
$a = array('1.10', 12.4, 1.13);
if (in_array('12.4', $a, true)) {
echo "'12.4' est trouvé avec le mode strict\n";
}
if (in_array(1.13, $a, true)) {
echo "1.13 est trouvé avec le mode strict\n";
}
?>L'exemple ci-dessus va afficher :
1.13 est trouvé avec le mode strict
Exemple #3 Exemple avec in_array() et un tableau en paramètre
<?php
$a = array(array('p', 'h'), array('p', 'r'), 'o');
if (in_array(array('p', 'h'), $a)) {
echo "'ph' a été trouvé\n";
}
if (in_array(array('f', 'i'), $a)) {
echo "'fi' a été trouvé\n";
}
if (in_array('o', $a)) {
echo "'o' a été trouvé\n";
}
?>L'exemple ci-dessus va afficher :
'ph' a été trouvé 'o' a été trouvé