funciones anónimas (cierres) se puede crear como funciones locales (por lo tanto no pollluting el espacio global, como se sugiere Datán).
Con la palabra clave "use", las variables que se pasan o crean mediante la función adjunta se pueden utilizar dentro del cierre. Esto es muy útil en las funciones de devolución de llamada que están limitadas en su lista de parámetros. Las variables de "uso" se pueden definir fuera del cierre, eliminando la necesidad de redefinirlas cada vez que se invoca el cierre.
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);
(Por supuesto, este ejemplo puede ser más simple y sin un cierre, pero es sólo para demostración.)
gran pregunta y grandes respuestas. Creo que ya sabía qué funciones lambda y cómo se podían usar en PHP (ya que las uso todo el tiempo en jQuery) pero nunca quise pensar en ello ... simplemente lo ignoré activamente hasta que alguien me preguntó al azar sobre eso. Fui demasiado perezoso para verificar mis presunciones, pero encontrar la respuesta por accidente es perfecto para mí. Gracias otra véz. :) – KyleFarris
OK, así que más allá de todo el bombo ("Lambda the Ultimate") y el hecho de que puedes construir un lenguaje completo de funciones lambda, en lo que respecta a PHP, su uso es para un solo uso, descartable función. Ese es el mensaje que estoy recibiendo. – user151841