PHP调用函数与参数使用数组

时间:2012-12-06 15:06:32

标签: php

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

感谢。

2 个答案:

答案 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);
}

Here's a demo.

答案 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的答案很棒。