Start · Sprachen · PHP · Referenz · array_find

array_find

Funktion

Gibt das erste Element eines Arrays zurück, für das die <code>$callback</code>-Funktion <code>true</code> zurückliefert, oder <code>null</code> wenn kein Element passt.

seit PHP 8.4.0 Kategorie: array

Signatur

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

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

Typ
mixed
Beschreibung
Gibt den Wert des ersten Elements zurück, für das der Callback 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
int(4)

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
Array ( [id] => 2 [name] => Bob [aktiv] => 1 )

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;
}
Kein passendes Element gefunden.

// 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.