W3docs

Comprendre la fonction PHP "array_key_exists"

La fonction PHP array_key_exists vérifie si une clé donnée existe dans un array et retourne une valeur boolean.

array_key_exists() est une fonction PHP intégrée qui vérifie si une clé donnée existe dans un array. Elle retourne true si la clé est présente et false dans le cas contraire — quelle que soit la valeur stockée sous cette clé. Cette page explique comment fonctionne la fonction, en quoi elle diffère de isset() (la source de bugs la plus courante), et quand utiliser l'une ou l'autre.

Syntaxe

array_key_exists(string|int $key, array $array): bool
  • $key — la clé à rechercher. Les clés d'un array en PHP sont toujours des entiers ou des chaînes de caractères, donc $key doit être de l'un de ces types.
  • $array — le array dans lequel effectuer la recherche.
  • Valeur de retourtrue si $key est une clé de $array, sinon false.

Notez qu'elle vérifie la clé, pas la valeur. Pour rechercher une valeur à la place, utilisez in_array() ou array_search().

Exemple de base

array_key_exists() est particulièrement utile avec les tableaux associatifs, où les clés sont nommées plutôt que numérotées.

php— editable, runs on the server

La sortie est :

The key 'first_name' exists in the array.

Elle fonctionne également avec des clés entières — y compris les index numériques automatiques d'une liste simple :

<?php

$colors = ['red', 'green', 'blue']; // keys are 0, 1, 2

var_dump(array_key_exists(2, $colors)); // bool(true)
var_dump(array_key_exists(3, $colors)); // bool(false)

Sortie :

bool(true)
bool(false)

array_key_exists() vs. isset()

C'est le point le plus important à comprendre concernant cette fonction. Les deux peuvent tester la présence d'une clé, mais elles répondent à des questions différentes :

  • array_key_exists($key, $array) retourne true si la clé est définie même quand sa valeur est null.
  • isset($array[$key]) retourne false quand la valeur est null, car isset() vérifie qu'une variable existe et n'est pas null.
<?php

$data = ['name' => null];

var_dump(array_key_exists('name', $data)); // bool(true)  — the key is there
var_dump(isset($data['name']));            // bool(false) — value is null

Sortie :

bool(true)
bool(false)

Utilisez array_key_exists() lorsqu'une valeur null est significative (par exemple, "le champ a été soumis mais laissé vide"). Utilisez isset() lorsque vous souhaitez uniquement savoir si une valeur utilisable et non nulle est présente — c'est également légèrement plus rapide dans le cas courant.

Quand l'utiliser

  • Se prémunir contre les avertissements "undefined array key" avant de lire une clé qui pourrait être absente.
  • Valider que les clés requises existent dans une configuration ou dans des données de formulaire.
  • Distinguer une clé définie à null d'une clé réellement absente.

Pièges courants

  • Elle est sensible à la casse pour les clés string. 'Name' et 'name' sont des clés différentes.
  • Elle ne recherche pas dans les tableaux imbriqués. Elle vérifie uniquement le premier niveau du array passé en argument.
  • Elle ne tient pas compte des valeurs. Rechercher 'John' comme clé dans ['first_name' => 'John'] retourne false. Utilisez in_array() pour rechercher par valeur.
  • Pour lister toutes les clés à la fois, consultez array_keys().

Conclusion

array_key_exists() est un outil petit mais essentiel pour travailler en toute sécurité avec les arrays PHP. Utilisez-la lorsque vous avez besoin de savoir si une clé est définie — et rappelez-vous que, contrairement à isset(), elle considère qu'une clé contenant null existe bien.

Pratique

Pratique
Que fait la fonction array_key_exists() en PHP ?
Que fait la fonction array_key_exists() en PHP ?
Was this page helpful?