在Ruby中,any?
接受一个块并检查给定的集合是否具有满足块的值,如下所示:
[1, 2, 3].any? {|v| v > 2} # true
有没有办法在PHP中执行此操作?我目前的想法是使用array_reduce()
:
array_reduce(array(1, 2, 3), function($acc, $val) {
return $acc || ($val > 2);
}, false);
但它会迭代数组中的所有元素,所以我猜它不如“any”好。在Ruby中。一旦在PHP中找到预期值,我该如何返回布尔值?
答案 0 :(得分:0)
你对功能编程非常热衷。 PHP不是一种函数式语言;至少那不是它的主要工作。
$array = array(1,2,3);
foreach ($array as $value) {
if ($value > 2) return $value;
}
答案 1 :(得分:0)
function any(array $array, callable $test) {
foreach ($array as $value) {
if ($test($value)) {
return true;
}
}
return false;
}
您可以使用简单的array_filter
,但每次都会迭代整个数组:
if (array_filter($array, function ($v) { return $v > 2; })) ...