Подтвердить что ты не робот

Функция обратного вызова с использованием переменных, вычисляемых вне ее

В основном я хотел бы сделать что-то вроде этого:

$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);

Возможно ли это? Вычисление переменной вне анонимной функции и ее использование внутри?

4b9b3361

Ответ 1

Вы можете использовать ключевое слово use для наследования переменных из родительской области. В вашем примере вы можете сделать следующее:

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

Для получения дополнительной информации см. страницу руководства анонимные функции.

Ответ 2

использовать глобальные переменные i.e $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);