Intereting Posts
Лучший способ присвоить переменной значение по умолчанию (имитировать Perl ||, || =) Cucumber для PHP-приложения Поиск электронной почты Mysql с boolean, дающим плохие значения Как помнит Youtube Likes? Symfony2 formbuilder – поле readonly объекта как метка move_uploaded_file не удалось открыть поток: Permission denied – Mac как к категориям (группа – классифицировать) по дате jquery post данные в php-скрипт и немедленно отображать его в том же файле сценария php Доктрина 2 Каков рекомендуемый способ доступа к свойствам? Когда я перехожу к Localhost и попробую имя пользователя и пароль, который он сообщает мне об ошибке? php регулярное выражение для получения определенного URL-адреса Предоставление загруженных изображений уникальному имени для mysqli Как установить MySQLi Как рекурсивно построить <select> с неизвестной глубиной дерева Скрытие панели инструментов и навигация в отчете SSRS внутри IFrame

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

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

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