function myFunc($x, $y) {
echo "x : {$x}";
echo "y : {$y}";
}
$params = array("y" => 1, "x" => 2);
是否可以像使用myFunc
函数一样调用call_user_func_array
但是数组的键会自动在函数中设置正确的参数?是否有任何功能可以执行此操作或是否可以创建此功能?例如:
call_func('myFunc', $params);
,结果就像这样
x : 2
y : 1
感谢。
答案 0 :(得分:7)
可能有一种更简单的方法可以做到这一点,但反思也应该起作用:
function call_func_keys($functionName, $args) {
$f = new ReflectionFunction($functionName);
$inOrder = array();
foreach($f->getParameters() as $param) {
if(array_key_exists($param->name, $args)) {
$inOrder[] = $args[$param->name];
} else {
$inOrder[] = $param->getDefaultValue(); # Will throw a reflection exception if not optional
}
}
call_user_func_array($functionName, $inOrder);
}
答案 1 :(得分:1)
<强>已更新!强>
通常你应该使用call_user_func_array
函数。
它应该以这种方式使用:
function myFunc($x, $y) {
echo "x : {$x}";
echo "y : {$y}";
}
$params = array("y" => 1, "x" => 2);
call_user_func_array('myFunc', $params);
但在你的情况下,你绝对使用Reflection
。 @minitech的答案很棒。