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

È stato utile?

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
scroll top