算法本身非常精细,请勿触摸它.
也就是说,您可以通过编写通用搜索功能来添加一些色带:
// find first key (from beginning of $a) for which the corresponding
// array element satisfies predicate $fn
function array_find(array $a, callable $fn)
{
foreach ($a as $key => $value) {
if ($fn($value, $key, $a)) {
return $key;
}
}
return false;
}
$key = array_find([0, 0, 4, 4, 5, 7], function($value) {
return $value >= 5;
});
现在,虽然这是一种更优雅的方法,但效率较低;在每个项目上调用闭包都有相当大的开销.如果性能至关重要,请使用您拥有的并运行它.