Passare array associativi in call_user_func_array (...)
-
23-09-2019 - |
Domanda
Sto costruendo un sistema di template e sto correndo in a un problema con le funzioni di chiamare al volo.
Quando provo il seguente:
$args = array(
4,
'test' => 'hello',
'hi'
);
Non si sa .. alcuni elementi numerici alcuni elementi associativi,
call_user_func_array($function, $args);
converte l'array a qualcosa di simile:
$args = array(
4,
'hello',
'hi'
);
C'è un modo per aggirare questo diverso passando un array come questo:
$args = array(
4,
array('test' => 'hello'),
'hi'
);
Grazie! Matt
Soluzione
Non c'è nessun posto per le chiavi dell'array di andare perché:
call_user_func_array($function, $args);
è equivalente a questo:
$function(4, 'hello', 'hi');
Si potrebbe utilizzare call_user_func()
invece:
call_user_func($function, $args);
poi dato una funzione con un argomento, è possibile ottenere l'array associativo:
function func($args) {
// $args is complete associative array
}
Si noti che call_user_func()
può anche prendere più di un argomento -. Ciascuno sarà passato alla funzione chiamata come argomento
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow