2

我想要array_filter一个函数内的数组:

function filter($array, $check){
    return array_filter($array,function($val){return $val==$check;});
}

注意:这是一个简化的场景。

这不起作用,因为$check未在过滤器函数中定义,但我不能使用global $check;两者,因为它无法从 ONE 级别导入变量。我也不能把它作为论据。

任何解决方法?

4

2 回答 2

6

您可以使用以下use关键字:

function filter($array, $check) {
    return array_filter($array, function($value) use ($check) {
        return ($value == $check);
    });
}

global当您想将外部变量带入普通函数时,它与使用关键字本质上相同。您需要使用use关键字而不是 的原因global匿名函数的工作方式有关。简而言之,它们变成了Closure 类的对象。

于 2013-02-04T07:26:14.110 回答
-1
function filter($array, $check = $check_global){
    return array_filter($array,function($val){return $val == $check;});
}
于 2013-02-04T07:26:02.303 回答