array_find_key
array_find_key($array, $callback)
Parcourt un tableau et renvoie la clé du premier élément pour lequel la condition renvoie true. S’il n’y a pas d’élément de ce type, elle renvoie null. La fonction existe depuis PHP 8.4.
Paramètres
- $array – le tableau dans lequel chercher.
- $callback – une fonction qui reçoit la valeur et la clé d’un élément et renvoie true quand c’est l’élément cherché.
Exemples
$users = array(15 => "jeanne@exemple.fr", 27 => "pierre@exemple.fr", 31 => "eve@exemple.fr");
var_dump(array_find_key($users, fn($email) => str_starts_with($email, "pierre@"))); // int(27)
var_dump(array_find_key($users, fn($email) => $email === "personne@exemple.fr")); // NULL
// une valeur null trouvée se distingue de « non trouvé » par la clé
$settings = array("couleur" => null, "taille" => 12);
var_dump(array_find($settings, fn($v) => $v === null)); // NULL
var_dump(array_find_key($settings, fn($v) => $v === null)); // string(7) "couleur"
// la clé 0 est un résultat valable - comparez avec null
$key = array_find_key(array("a", "b"), fn($v) => $v === "a");
var_dump($key !== null); // bool(true)
Remplacement pour les anciennes versions de PHP
Dans les versions antérieures à PHP 8.4, la fonction n’existe pas. Le code ci-dessous ne l’ajoute que là où elle manque, les versions récentes utilisent la fonction intégrée.
if (!function_exists("array_find_key")) {
function array_find_key(array $array, callable $callback) {
foreach ($array as $key => $value) {
if ($callback($value, $key)) {
return $key;
}
}
return null;
}
}
var_dump(array_find_key(array(15 => "jeanne", 27 => "pierre"), function ($v) { return $v === "pierre"; })); // int(27)
Points d’attention
- Quand l’élément n’existe pas, elle renvoie null, pas false comme array_search().
- La clé 0 ou "" est un résultat valable. Comparez avec === null, pas avec la condition if ($key).
- Pour chercher une valeur exacte, array_search() est plus simple.
Fonctions associées :
array_find()
array_search()
array_key_exists()
array_any()