Я создаю систему шаблонной обработки, и я работаю в к проблеме с вызыванием функций на лету.
Когда я пробую следующее:
$args = array(
4,
'test' => 'hello',
'hi'
);
Вы знаете.. некоторые числовые элементы некоторые ассоциативные элементы,
call_user_func_array($function, $args);
преобразовывает массив во что-то вроде этого:
$args = array(
4,
'hello',
'hi'
);
Есть ли любой путь вокруг этого кроме передачи массива как это:
$args = array(
4,
array('test' => 'hello'),
'hi'
);
Спасибо! Матовый
Ключам массива некуда деваться, потому что:
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 ()
также может принимать более одного аргумента - каждый будет передан вызываемой функции в качестве аргумента.