1

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);

しかし、配列内のすべての要素を反復するので、「どれか」ほど良くはないと思います。ルビーで。PHPで期待値が見つかったらすぐにブール値を返すにはどうすればよいですか?

4

2 に答える 2

0

あなたは関数型プログラミングに熱心すぎます。PHP は関数型言語ではありません。少なくともそれは主な仕事ではありません。

$array = array(1,2,3);
foreach ($array as $value) {
    if ($value > 2) return $value;
}
于 2013-03-22T21:00:18.693 に答える
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; })) ...
于 2013-03-22T21:00:26.320 に答える