2011-01-03 10 views

Respuesta

94

Se puede utilizar la palabra clave use para heredar las variables del ámbito padre. En el ejemplo, se puede hacer lo siguiente:

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

Para obtener más información, consulte la página del manual sobre anonymous functions.

+0

Muchas gracias, mfonda. He echado un vistazo a la página del manual pero he perdido esa palabra clave en el ejemplo del código. –

+0

¡me salvaste el día! simple y útil <3 – RezaSh

+9

Solo para agregar a la respuesta anterior, la variable del ámbito principal está siendo COPIADA en lugar de estar disponible dentro de la función de devolución de llamada. Si el parámetro primario necesita ser manipulado, se debe enviar una referencia como '$ listOfValLessThanAvg = []; $ callback = function ($ val) use ($ avg, & $ listOfValLessThanAvg) { if ($ val <$ avg) array_push ($ listOfValLessThanAvg, $ val); }; ' – pravin

-4

uso de variables globales es decir $ GLOBAL [ 'promedio']

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

Las variables globales se consideran malas prácticas. Por otra parte, el uso de vars globales aquí es una exageración, ya que el "uso" es suficiente. –

+0

¡Las variables globales son malvadas! –

Cuestiones relacionadas