Úvod >PHP >PHP manuál - funkce >array_find_key

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()