Передайте ассоциативные массивы в call_user_func_array (…)

Я создаю систему шаблонной обработки, и я работаю в к проблеме с вызыванием функций на лету.

Когда я пробую следующее:

$args = array(
    4,
    'test' => 'hello',
    'hi'
);

Вы знаете.. некоторые числовые элементы некоторые ассоциативные элементы,

call_user_func_array($function, $args);

преобразовывает массив во что-то вроде этого:

$args = array(
    4,
    'hello',
    'hi'
);

Есть ли любой путь вокруг этого кроме передачи массива как это:

$args = array(
    4,
    array('test' => 'hello'),
    'hi'
);

Спасибо! Матовый

6
задан Matt 31 March 2010 в 13:08
поделиться

1 ответ

Ключам массива некуда деваться, потому что:

call_user_func_array($function, $args);

эквивалентно этому:

$function(4, 'hello', 'hi');

Вместо этого вы можете использовать call_user_func () :

call_user_func($function, $args);

а затем задать функцию с одним аргументом, вы может получить ассоциативный массив:

function func($args) {
//    $args is complete associative array
}

Обратите внимание, что call_user_func () также может принимать более одного аргумента - каждый будет передан вызываемой функции в качестве аргумента.

15
ответ дан 8 December 2019 в 16:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: