4
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

ありがとう。

4

2 に答える 2

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

これがデモです。

于 2012-12-06T15:11:01.977 に答える
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の回答は素晴らしいです。

于 2012-12-06T15:09:22.340 に答える