array_find_key
array_find_key($pole, $podminka)
Projde pole a vrátí klíč prvního prvku, pro který podmínka vrátí true. Když takový prvek není, vrátí null. Funkce je od PHP 8.4.
Parametry
- $pole – prohledávané pole.
- $podminka – funkce, která dostane hodnotu a klíč prvku a vrátí true, když je prvek hledaný.
Příklady
$uzivatele = array(15 => "jana@example.com", 27 => "petr@example.com", 31 => "eva@example.com");
var_dump(array_find_key($uzivatele, fn($email) => str_starts_with($email, "petr@"))); // int(27)
var_dump(array_find_key($uzivatele, fn($email) => $email === "nikdo@example.com")); // NULL
// nalezená hodnota null se od nenalezené pozná podle klíče
$nastaveni = array("barva" => null, "velikost" => 12);
var_dump(array_find($nastaveni, fn($h) => $h === null)); // NULL
var_dump(array_find_key($nastaveni, fn($h) => $h === null)); // string(5) "barva"
// klíč 0 je platný výsledek – porovnávejte s null
$klic = array_find_key(array("a", "b"), fn($h) => $h === "a");
var_dump($klic !== null); // bool(true)
Náhrada pro starší PHP
Ve verzích starších než PHP 8.4 funkce není. Následující kód ji doplní jen tam, kde chybí, v novějších verzích se použije vestavěná funkce.
if (!function_exists("array_find_key")) {
function array_find_key(array $pole, callable $podminka) {
foreach ($pole as $klic => $hodnota) {
if ($podminka($hodnota, $klic)) {
return $klic;
}
}
return null;
}
}
var_dump(array_find_key(array(15 => "jana", 27 => "petr"), function ($h) { return $h === "petr"; })); // int(27)
Na co si dát pozor
- Když prvek není, vrátí null, ne false jako array_search().
- Klíč 0 nebo "" je platný výsledek. Porovnávejte přes === null, ne podmínkou if ($klic).
- Pro hledání přesné hodnoty je jednodušší array_search().
Příbuzné funkce:
array_find()
array_search()
array_key_exists()
array_any()