2012-03-16 20 views
7

Tengo una matriz de argumentos que quiero pasar a una función a través de call_user_func. El siguiente código dará el error actualmente: Missing argument 2 for Closure. ¿Cómo se puede reescribir para que funcione correctamente?Pase múltiples argumentos a la función anónima w/call_user_func

$args = array('foo', 'bar'); 
call_user_func(function($arg1, $arg2) {}, $args); 

Respuesta

15

Pruebe call_user_func_array() si quiere pasar una serie de parámetros.

+1

Mejor respuesta que la mía. –

+0

@KyleDecot La mejor manera de agradecerme es aceptando una respuesta si esto funcionó para usted :) – Crashspeeder

0

O pásalos uno por uno, o haz que la función de devolución de llamada acepte una matriz como argumento y haz el análisis interno.

1

Sepa que esto ha sido respondido. Sin embargo, lo siguiente también funciona bien.

Exec entre 100.000 accede


1,006599: call_user_func ($ func, $ valor)

1,193323: call_user_func ((array ($ objeto, $ func), valor $)

1.232891: call_user_func_array ($ func, array (valor $))

1,309725: call_user_func_array ((array ($ objeto, $ func), array (valor $)

Si es necesario utilizar call_user_func:

call_user_func(
    $function, 
     $arg1,$arg2 
); 

Si es necesario utilizar call_user_func_array:

call_user_func_array(
    $function, 
     array($arg1,$arg2) 
); 

Por diseño ambos pueden pasar matrices independientemente. Sin embargo, también por diseño, uno puede ser más necesario para el uso que el otro. Todo depende de para qué se usa. Un conjunto simplista de arreglos pasa muy bien y más rápido, en call_user_func.

Cuestiones relacionadas