我在foreach循环中使用了一个函数。我在这个循环中更新了一些var,我想把它传递给一个函数。 但是,我不明白,如果有可能传递回调参数。 它似乎没有像那样工作。
foreach($infos as $info) {
$i = $info;
$a = 'aaa';
$b = 'bbb';
$datas[$i] = function($a,$b) {
$data['a'] = $a;
$data['b'] = $b;
return $data;
};
}
return $datas;
如何传递var $a
,$b
?
答案 0 :(得分:0)
目前尚不清楚为什么要这样写。请改为使用直接分配
$datas = array();
foreach($infos as $info) {
$a = 'aaa';
$b = 'bbb';
$datas[$info] = array('a' => $a, 'b' => $b);
}
答案 1 :(得分:0)
不确定你要在这里完成什么,但匿名函数可以使用"使用"从父作用域继承变量。所以试试:
foreach($infos as $info) {
$i = $info;
$a = 'aaa';
$b = 'bbb';
$datas[$i] = function() use ($a, $b) {
$data['a'] = $a;
$data['b'] = $b;
return $data;
};
}
return $datas;
答案 2 :(得分:0)
见这里 - http://php.net/manual/en/functions.anonymous.php#example-195。 必须是这样的:
$datas[$i] = function() use($a,$b) {
$data['a'] = $a;
$data['b'] = $b;
return $data;
};