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

Twi*_*ght 2 php

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

function filter($array, $check){
    return array_filter($array,function($val){return $val==$check;});
}
Run Code Online (Sandbox Code Playgroud)

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

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

任何解决方法?

Sve*_*sen 6

您可以使用use关键字:

function filter($array, $check) {
    return array_filter($array, function($value) use ($check) {
        return ($value == $check);
    });
}
Run Code Online (Sandbox Code Playgroud)

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