回调函数使用在其外部计算的变量

时间:2011-01-03 21:54:58

标签: php anonymous-function

基本上我想做这样的事情:

$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$avg = array_sum($arr) / count($arr);
$callback = function($val){ return $val < $avg };

return array_filter($arr, $callback);

这实际上可行吗?计算匿名函数之外的变量并在里面使用它?

2 个答案:

答案 0 :(得分:120)

您可以使用use关键字从父作用域继承变量。在您的示例中,您可以执行以下操作:

$callback = function($val) use ($avg) { return $val < $avg; };

有关详细信息,请参阅anonymous functions上的手册页。

答案 1 :(得分:-5)

使用全局变量,即$ GLOBAL ['avg']

$arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
$GLOBALS['avg'] = array_sum($arr) / count($arr);
$callback = function($val){ return $val < $GLOBALS['avg'] };

$return array_filter($arr, $callback);