(PHP 8 >= 8.4.0)
array_find — Devuelve el primer elemento que valida la función de retrollamada
array_find() devuelve el valor del primer elemento del
array para el cual la función de retrollamada callback
devuelve true . Si ningún elemento es encontrado, la función devuelve null .
La función devuelve el valor del primer elemento para el cual el
callback devuelve true . Si ningún elemento es encontrado,
la función devuelve null .
Ejemplo #1 Ejemplo con array_find()
<?php
$array = [
'a' => 'perro',
'b' => 'vaca',
'c' => 'gato',
'd' => 'pato',
'e' => 'ganso',
'f' => 'elefante'
];
// Encontrar el primer animal cuyo nombre tiene más de 5 caracteres.
var_dump(array_find($array, function (string $value) {
return strlen($value) > 5;
}));
// Encontrar el primer animal cuyo nombre comienza con f.
var_dump(array_find($array, function (string $value) {
return str_starts_with($value, 'f');
}));
// Encontrar el primer animal cuya clave es la primera letra de su nombre.
var_dump(array_find($array, function (string $value, $key) {
return $value[0] === $key;
}));
// Encontrar el primer animal cuya clave valida una RegEx.
var_dump(array_find($array, function ($value, $key) {
return preg_match('/^([a-f])$/', $key);
}));
?>El ejemplo anterior mostrará:
string(5) "pato" NULL string(3) "gato" string(3) "perro"
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;
}
?>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.