我有一个数组,我想用一个外部变量来过滤它。情况如下:
$id = '1';
var_dump($id);
$foo = array_filter($bar, function($obj){
if (isset($obj->foo)) {
var_dump($id);
if ($obj->foo == $id) return true;
}
return false;
});
第一个var_dump
返回ID(当然是动态设置的),但是第二个var_dump
返回NULL。
谁能告诉我为什么,以及如何解决它?
3条答案
按热度按时间lsmepo6l1#
变量
$id
不在函数的作用域中。您需要使用use
子句来使外部变量可访问:参见Anonymous functions的文档(Example #3“Inheriting variables from the parent scope”)。
x6h2sr282#
变量范围问题!
简单的解决方法是:
PHP 5.3之后
希望它能帮助
aelbi1ox3#
因为闭包函数看不到
$id
。use
关键字: