function myFunc($x, $y) {
echo "x : {$x}";
echo "y : {$y}";
}
$params = array("y" => 1, "x" => 2);
Run Code Online (Sandbox Code Playgroud)
是否可以myFunc像使用call_user_func_array函数一样调用,但数组的键会自动在函数中设置正确的参数?是否有任何功能可以执行此操作或是否可以创建此功能?例如 :
call_func('myFunc', $params);
Run Code Online (Sandbox Code Playgroud)
结果就是这样
x : 2
y : 1
Run Code Online (Sandbox Code Playgroud)
谢谢.
可能有一种更简单的方法可以做到这一点,但反射也应该有效:
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);
}
Run Code Online (Sandbox Code Playgroud)