in_array

in_array($needle, $array, $strict)

Renvoie true si le tableau $array contient la valeur $needle, sinon false. Le troisième paramètre active la comparaison stricte, type de données compris.

Paramètres

  • $needle – la valeur cherchée (pour les chaînes, majuscules et minuscules sont distinguées).
  • $array – le tableau à parcourir.
  • $strict – facultatif, true = comparaison type compris (===). La valeur par défaut est false.

Exemples

$colors = array("rouge", "vert", "bleu");
var_dump(in_array("vert", $colors)); // bool(true)
var_dump(in_array("Vert", $colors)); // bool(false)
// comparaison souple – les chaînes numériques sont comparées comme des nombres
var_dump(in_array("1e1", array("10"))); // bool(true)
var_dump(in_array("1e1", array("10"), true)); // bool(false)
var_dump(in_array("5", array(1, 5, 9))); // bool(true)
var_dump(in_array("5", array(1, 5, 9), true)); // bool(false)
// valeurs autorisées (par ex. le tri depuis l'URL)
$allowed = array("nom", "date", "prix");
$sort = isset($_GET["sort"]) && in_array($_GET["sort"], $allowed, true) ? $_GET["sort"] : "nom";
// sans paramètre d'URL ou avec une valeur non autorisée, le tri par défaut reste
echo $sort; // nom

Points d’attention

  • Sans le troisième paramètre, la comparaison est souple (==), ce qui peut surprendre. Par exemple in_array(0, array("a")) renvoie true en PHP 7, mais false en PHP 8. Sauf raison contraire, passez true comme troisième paramètre.
  • Pour trouver la clé sous laquelle une valeur est enregistrée, utilisez array_search(), pour vérifier qu’une clé existe, array_key_exists().
  • in_array avec un tableau de valeurs autorisées est un bon moyen de valider les données saisies par l’utilisateur (une liste blanche).

Fonctions associées :
count()
strpos()
is_string()