【发布时间】:2017-11-15 04:09:53
【问题描述】:
这是我的代码:
$array = ['foo' => 'bar', 'bis' => 'ter'];
$finalData=[];
$closure = function ($value, $key) use ($finalData) {
$finalData[]=$value;
};
foreach ($array as $key => $value) {
$closure($value, $key);
}
var_dump($finalData); // array (0)
为什么$finalData 里面有0 elements?不应该是['bar','ter']
【问题讨论】:
-
来自comments on the anonymous functions page:“在将变量“导入”到闭包的作用域时要小心——很容易错过/忘记它们实际上是被复制到闭包的作用域中,而不是刚刚发布。”。换句话说,函数内部的
$finalData将获得$finalData在函数外部在定义函数时拥有的值的副本。 -
不这样做,而是返回一个数组