В основном я хотел бы сделать что-то вроде этого:
$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);
Возможно ли это? Вычисление переменной вне анонимной функции и ее использование внутри?
Вы можете использовать ключевое слово use
для наследования переменных из родительской области. В вашем примере вы можете сделать следующее:
$callback = function($val) use ($avg) { return $val < $avg; };
Для получения дополнительной информации см. Страницу руководства на анонимных функциях .
используйте глобальные переменные, т.е. $ 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);