PHP 8.5.0 RC4 available for testing

array_find

(PHP 8 >= 8.4.0)

array_findВозвращает первый элемент, который удовлетворяет callback-функции

Описание

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

Функция array_find() возвращает значение первого элемента массива (array), для которого callback-функция вернула true. Функция вернёт null, если не найдёт ни одного элемента, который удовлетворяет условиям поиска.

Список параметров

array
Массив (array), в котором требуется найти элемент.
callback

Callback-функция, которую функция вызовет для проверки элементов входного массива, со следующей сигнатурой:

callback(mixed $value, mixed $key): bool
Функция array_find() вернёт значение и не станет вызывать callback-функцию для других элементов, если функция обратного вызова вернёт true.

Возвращаемые значения

Функция возвращает значение первого элемента, для которого callback-функция вернула true. Функция вернёт null, если не найдёт элемент, который удовлетворяет условиям поиска.

Примеры

Пример #1 Пример поиска функцией array_find() первого значения, которое удовлетворяет callback-функции

<?php

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

// Найдём название первого животного, которое длиннее 4 символов
var_dump(array_find($array, function (string $value) {
return
strlen($value) > 4;
}));

// Найдём название первого животного, которое начинается с буквы f
var_dump(array_find($array, function (string $value) {
return
str_starts_with($value, 'f');
}));

// Найдём название первого животного, первая буква которого совпадает с ключом
var_dump(array_find($array, function (string $value, $key) {
return
$value[0] === $key;
}));

// Найдём название первого животного, ключ которого соответствует регулярному выражению
var_dump(array_find($array, function ($value, $key) {
return
preg_match('/^([a-f])$/', $key);
}));

?>

Результат выполнения приведённого примера:

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

Смотрите также

  • array_find_key() - Возвращает ключ первого элемента, который удовлетворяет callback-функции
  • array_all() - Проверяет, каждый ли элемент массива array удовлетворяет callback-функции
  • array_any() - Проверяет, содержит ли массив array хотя бы один элемент, который удовлетворяет callback-функции
  • array_filter() - Фильтрует элементы массива через callback-функцию
  • array_reduce() - Итеративно сводит массив к единственному значению через callback-функцию
Добавить

Примечания пользователей 2 notes

up
13
mail at nititech dot de
6 months 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
1 day 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