Signatur
Beschreibung
array_find() durchsucht ein Array sequenziell und liefert den Wert des ersten Elements zurück, für das der Callback einen wahren Wert (truthy) zurückgibt. Sobald ein passendes Element gefunden wird, bricht die Suche ab – das Array wird also nicht vollständig durchlaufen, wenn ein Treffer früh gefunden wird.
Die Funktion ist besonders nützlich, wenn man aus einer Liste von Objekten oder assoziativen Arrays schnell einen einzelnen Eintrag anhand eines Kriteriums heraussuchen möchte, ohne selbst eine foreach-Schleife mit einer Abbruchbedingung schreiben zu müssen. Im Gegensatz zu array_filter(), das alle passenden Elemente als Array zurückgibt, liefert array_find() direkt das erste passende Element.
Der Callback erhält bei jedem Aufruf den Wert des aktuellen Elements als Argument. Wenn kein Element die Bedingung erfüllt, gibt die Funktion null zurück. Dies ermöglicht einen einfachen null-Check, um zu prüfen, ob ein passendes Element gefunden wurde.
Verwandte Funktionen sind array_find_key(), das den Schlüssel statt des Werts zurückgibt, sowie array_any() und array_all(), die nur einen booleschen Wert liefern.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $array Pflicht | array | Das zu durchsuchende Array. Es können sowohl numerisch indizierte als auch assoziative Arrays übergeben werden. | |
| $callback Pflicht | callable | Eine Callback-Funktion, die für jedes Element aufgerufen wird. Sie erhält den Wert des aktuellen Elements und muss true (oder einen truthy-Wert) zurückgeben, damit das Element als Treffer gilt. |
Rückgabewert
true liefert. Erfüllt kein Element die Bedingung, wird null zurückgegeben.Beispiele
Erstes gerades Element in einem Array finden
<?php
$zahlen = [1, 3, 5, 4, 7, 8];
$erstesGerade = array_find($zahlen, fn(int $n) => $n % 2 === 0);
var_dump($erstesGerade);
// Gibt 4 zurück, da 4 das erste gerade Element ist
Benutzer-Objekt anhand einer Eigenschaft suchen
<?php
$benutzer = [
['id' => 1, 'name' => 'Alice', 'aktiv' => false],
['id' => 2, 'name' => 'Bob', 'aktiv' => true],
['id' => 3, 'name' => 'Carol', 'aktiv' => true],
];
$ersterAktiver = array_find(
$benutzer,
fn(array $b) => $b['aktiv'] === true
);
print_r($ersterAktiver);
// Liefert den Eintrag von Bob, da er der erste aktive Benutzer ist
Kein passendes Element – Rückgabe von null
<?php
$werte = [1, 3, 5, 7];
$ergebnis = array_find($werte, fn(int $n) => $n > 100);
if ($ergebnis === null) {
echo 'Kein passendes Element gefunden.';
} else {
echo 'Gefunden: ' . $ergebnis;
}
// Wichtig · Fallstricke
Achtung bei falsy-Werten: Da array_find() bei keinem Treffer null zurückgibt, kann es zu Verwechslungen kommen, wenn das gesuchte Element selbst null ist. In solchen Fällen sollte stattdessen array_find_key() verwendet werden, um zu überprüfen, ob tatsächlich ein Schlüssel gefunden wurde (!== null-Prüfung auf den Schlüssel).
Die Funktion ist neu in PHP 8.4.0 und steht in älteren PHP-Versionen nicht zur Verfügung. Für ältere Versionen kann das Verhalten mit array_filter() in Kombination mit reset() oder einer manuellen foreach-Schleife nachgebaut werden.