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


Importing PHP variables from one scope level up

我想在函数中array_filter一个数组:

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

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

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

有什么解决方法吗?

您可以使用

use关键字:

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

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

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