PHP 8.4.22 Released!

array_find

(PHP 8 >= 8.4.0)

array_findGibt das erste Element zurück, das eine Callback-Funktion erfüllt

Beschreibung

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

array_find() gibt den Wert des ersten Elements eines Arrays zurück, für das die übergebene callback-Funktion true zurückgibt. Wenn kein passendes Element gefunden wird, gibt die Funktion null zurück.

Parameter-Liste

array
Das zu durchsuchende Array.
callback

Die Callback-Funktion, die zur Prüfung jedes Elements aufgerufen wird und die folgende Signatur haben muss:

function callback(mixed $value, mixed $key): bool
Wenn diese Funktion true zurückgibt, wird der Wert von array_find() zurückgegeben und die Callback-Funktion wird für weitere Elemente nicht mehr aufgerufen.

Rückgabewerte

Die Funktion gibt den Wert des ersten Elements zurück, für das callback true zurückgibt. Wenn kein passendes Element gefunden wird, gibt die Funktion null zurück.

Beispiele

Beispiel #1 array_find()-Beispiel

<?php
$array
= [
'a' => 'dog',
'b' => 'cat',
'c' => 'cow',
'd' => 'duck',
'e' => 'goose',
'f' => 'elephant'
];

// Findet das erste Tier mit einem Namen, der länger als 4 Zeichen ist.
var_dump(array_find($array, function (string $value) {
return
strlen($value) > 4;
}));

// Findet das erste Tier, dessen Name mit f beginnt.
var_dump(array_find($array, function (string $value) {
return
str_starts_with($value, 'f');
}));

// Findet das erste Tier, bei dem der Array-Schlüssel das erste Zeichen des Tiernamens ist.
var_dump(array_find($array, function (string $value, $key) {
return
$value[0] === $key;
}));

// Findet das erste Tier, bei dem der Array-Schlüssel einem regulären Ausdruck entspricht.
var_dump(array_find($array, function ($value, $key) {
return
preg_match('/^([a-f])$/', $key);
}));
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

string(5) "goose"
NULL
string(3) "cow"
string(3) "dog"

Siehe auch

  • array_find_key() - Gibt den Schlüssel des ersten Elements zurück, das eine Callback-Funktion erfüllt
  • array_all() - Prüft, ob alle Elemente eines Arrays eine Callback-Funktion erfüllen
  • array_any() - Prüft, ob mindestens ein Element eines Arrays eine Callback-Funktion erfüllt
  • array_filter() - Filtert Elemente eines Arrays mittels einer Callback-Funktion
  • array_reduce() - Reduziert das Array mittels einer Callback-Funktion iterativ auf einen einzigen Wert
add a note

User Contributed Notes 2 notes

up
14
mail at nititech dot de
1 year ago
A simple fallback For older PHP versions, that do not have array_find:

<?php

/**
 * Porting of PHP 8.4 function
 *
 * @template TValue of mixed
 * @template TKey of array-key
 *
 * @param array<TKey, TValue> $array
 * @param callable(TValue $value, TKey $key): bool $callback
 * @return ?TValue
 *
 * @see https://www.php.net/manual/en/function.array-find.php
 */
function array_find(array $array, callable $callback): mixed
{
    foreach ($array as $key => $value) {
        if ($callback($value, $key)) {
            return $value;
        }
    }

    return null;
}
?>
up
0
harl at gmail dot com
6 months ago
Note that if null satisfies the callback then there is no way to tell if null was returned because it was found in the array or if it was because nothing satisfying the callback was found.

In this case, it'll be more robust to use array_find_key; null can't be a key, so if that's what you get it must be because the search failed to find a match.

Obviously, you'd then use the array key to look up the corresponding value in the array.
To Top