Анонимные функции (замыкания) могут создаваться как локальные функции (таким образом, не загрязняя глобальное пространство, как предположил Датан).
С ключевым словом "use" переменные, которые передаются или создаются функцией включения, могут использоваться внутри замыкания. Это очень полезно в функциях обратного вызова, которые ограничены в списке параметров. Переменные «use» могут быть определены вне замыкания, что устраняет необходимость их переопределения при каждом вызове замыкания.
function change_array($arr, $pdo)
{
$keys = array('a', 'c');
$anon_func = function(& $val, $key) use ($keys, $pdo)
{
if (in_array($key, $keys) {
$pdo->query('some query using $key');
$val = $pdo->fetch();
}
}
arr_walk($arr, $anon_func);
return $arr;
}
$pdo = new($dsn, $uname, $pword);
$sample = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4);
$sample = change_array($sample, $pdo);
(Конечно, этот пример может быть проще без замыкания, но это только для демонстрации.)