(PHP 8 >= 8.4.0)
array_find — コールバック関数を満たす最初の要素を返す
例1 array_find() の例
<?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"
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;
}
?>