Start · Sprachen · PHP · Referenz · array_find_key

array_find_key

Funktion

Gibt den Schlüssel des ersten Array-Elements zurück, für das der <code>$callback</code> <code>true</code> zurückgibt, oder <code>null</code> wenn kein Element passt.

seit PHP 8.4.0 Kategorie: array

Signatur

array_find_key(array $array, callable $callback): mixed

Beschreibung

array_find_key() durchsucht ein Array und liefert den Schlüssel des ersten Elements, für das die übergebene Callback-Funktion einen truthy Wert zurückgibt. Im Gegensatz zu array_find(), das den Wert des gefundenen Elements liefert, ist hier der Schlüssel das gesuchte Ergebnis – praktisch für assoziative Arrays, bei denen die Position oder der Name des Eintrags relevant ist.

Die Callback-Funktion erhält bei jedem Aufruf den Wert des aktuellen Elements als erstes Argument. Das Array wird in der Reihenfolge seiner Einträge von vorne nach hinten durchlaufen; sobald der Callback erstmals true (oder einen truthy Wert) zurückgibt, stoppt die Suche und der zugehörige Schlüssel wird zurückgegeben.

Wird kein passendes Element gefunden, gibt die Funktion null zurück. Da auch null ein gültiger Array-Schlüssel sein kann, sollte das Ergebnis bei Bedarf mit array_key_exists() abgesichert werden.

Typische Anwendungsfälle sind das Auffinden von Konfigurationsschlüsseln, das Suchen nach einem bestimmten Objekt in einer indizierten Sammlung, oder die Positionsbestimmung in einem geordneten assoziativen Array.

Parameter

Name Typ Default Beschreibung
$array Pflicht array Das zu durchsuchende Array. Kann sowohl numerisch als auch assoziativ sein.
$callback Pflicht callable Eine Callback-Funktion der Form function(mixed $value): bool. Sie erhält den Wert des aktuellen Elements und soll true zurückgeben, wenn dieses Element die gesuchte Bedingung erfüllt.

Rückgabewert

Typ
mixed
Beschreibung
Den Schlüssel (Typ int oder string) des ersten Elements, für das der Callback truthy ist. Gibt null zurück, wenn kein passendes Element gefunden wurde.

Beispiele

Schlüssel eines Benutzers anhand einer Eigenschaft finden

<?php
$users = [
    'alice' => ['age' => 25, 'admin' => false],
    'bob'   => ['age' => 32, 'admin' => true],
    'carol' => ['age' => 28, 'admin' => true],
];

$firstAdminKey = array_find_key($users, fn($user) => $user['admin'] === true);

echo $firstAdminKey; // bob
bob

Position eines Wertes in einem numerischen Array finden

<?php
$temperatures = [18.5, 22.0, 35.1, 29.3, 15.0];

// Ersten Index mit Temperatur über 30 Grad suchen
$index = array_find_key($temperatures, fn($temp) => $temp > 30.0);

if ($index !== null) {
    echo "Erster Hitzewert an Index $index: {$temperatures[$index]}";
} else {
    echo "Keine Temperatur über 30 Grad gefunden.";
}
Erster Hitzewert an Index 2: 35.1

Kein passendes Element — Rückgabe null

<?php
$prices = ['apple' => 0.99, 'banana' => 0.49, 'cherry' => 2.99];

$key = array_find_key($prices, fn($price) => $price > 100.0);

var_dump($key); // NULL
NULL

// Wichtig · Fallstricke

Achtung bei null als möglichem Schlüssel: Da array_find_key() im Nicht-Treffer-Fall null zurückgibt, kann es zu einer Mehrdeutigkeit kommen, wenn null tatsächlich ein Schlüssel im Array ist (etwa durch implizite Typumwandlung). Prüfe in solchen Fällen das Ergebnis zusätzlich mit array_key_exists().

Nur erster Treffer: Die Funktion stoppt nach dem ersten Match. Werden alle passenden Schlüssel benötigt, ist array_keys() in Kombination mit array_filter() die richtige Wahl.

Die Funktion wurde in PHP 8.4.0 gemeinsam mit array_find(), array_any() und array_all() eingeführt und steht in älteren PHP-Versionen nicht zur Verfügung.