我怎样才能做Ruby中的“any?”在PHP中所做的同样的事情呢

我怎样才能做Ruby中的“any?”在PHP中所做的同样的事情呢,php,Php,用红宝石做的,有吗?获取一个块并检查给定集合是否具有满足该块要求的值,如下所示: [1, 2, 3].any? {|v| v > 2} # true 在PHP中有什么方法可以做到这一点吗?我目前的想法是使用array_reduce: 但是它会创建数组中的所有元素,所以我猜它没有任何元素好?用红宝石做的。如何在PHP中找到期望值后立即返回布尔值?您对函数式编程太感兴趣了。PHP不是一种函数式语言;至少这不是它的主要工作 $array = array(1,2,3); foreach ($ar

用红宝石做的,有吗?获取一个块并检查给定集合是否具有满足该块要求的值,如下所示:

[1, 2, 3].any? {|v| v > 2} # true
在PHP中有什么方法可以做到这一点吗?我目前的想法是使用array_reduce:


但是它会创建数组中的所有元素,所以我猜它没有任何元素好?用红宝石做的。如何在PHP中找到期望值后立即返回布尔值?

您对函数式编程太感兴趣了。PHP不是一种函数式语言;至少这不是它的主要工作

$array = array(1,2,3);
foreach ($array as $value) {
    if ($value > 2) return $value;
}
您可以改用一个简单的数组过滤器,但每次它都会迭代整个数组:

if (array_filter($array, function ($v) { return $v > 2; })) ...

简单for循环有什么问题?你的意思是这样的:是的,但是in_数组不能将函数作为参数。你应该看看哪个库提供了任何和许多其他函数集合原语。但是它会创建数组中的所有元素,所以我猜它不如其他库好?在Ruby中,你认为如何工作?@deceze的解决方案更好,如果你想要一个任意的测试用例,但是一个简单的for循环只会使事情变得不那么复杂,并减少函数调用的非常轻微的开销。谢谢!我希望PHP有类似于in_数组的东西,它将函数作为参数,但它足够简单。谢谢!array_filter与我建议的array_reduce存在相同的问题,但将其作为foreach的函数在这种情况下看起来已经足够好了。
function any(array $array, callable $test) {
    foreach ($array as $value) {
        if ($test($value)) {
            return true;
        }
    }
    return false;
}
if (array_filter($array, function ($v) { return $v > 2; })) ...