从一个作用域级别导入PHP变量

时间:2013-02-04 07:15:37

标签: php

我想array_filter函数内的数组:

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

注意:这是一个简化的方案。

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

有任何解决方法吗?

2 个答案:

答案 0 :(得分:6)

您可以使用use关键字:

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

当您想将外部变量引入普通函数时,它与使用global关键字基本相同。您需要使用use关键字而不是global的原因与anonymous functions的工作方式有关。简而言之,它们会变成Closure class的对象。

答案 1 :(得分:-1)

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