Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从一个作用域级别导入PHP变量_Php - Fatal编程技术网

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

从一个作用域级别导入PHP变量,php,Php,我想array\u filter函数中的数组: function filter($array, $check){ return array_filter($array,function($val){return $val==$check;}); } 注意:这是一个简化的场景 这不起作用,因为过滤器函数中没有定义$check,但我不能使用全局$check两者都不是,因为它无法从一级以上导入变量。我也不能把它当作论点 任何解决方法?您可以使用use关键字: function filter(

我想
array\u filter
函数中的数组:

function filter($array, $check){
    return array_filter($array,function($val){return $val==$check;});
}
注意:这是一个简化的场景


这不起作用,因为过滤器函数中没有定义
$check
,但我不能使用
全局$check两者都不是,因为它无法从一级以上导入变量。我也不能把它当作论点


任何解决方法?

您可以使用
use
关键字:

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

当您希望将外部变量引入正常函数时,它与使用
global
关键字基本相同。您需要使用
use
关键字而不是
global
的原因与工作方式有关。简言之,它们被转换为。

“我也不能将其作为参数传递”的对象。为什么???因为过滤器函数是由
数组_filter
内部调用的,而不是脚本本身。将其声明为全局。此外,您还可以将其作为arg@Hiroto如何将其作为arg传递?与我的一样有效,但更有趣。