0

明らかにこれは本当にお粗末なコードですが、改善方法が思い浮かびません。「テスト」機能はまったく変更できませんが、残りはすべて変更できます。

テスト関数を実行する 1 つの関数に値の配列を渡したいと考えています。重要なことは、再宣言せずに、テスト関数で事前定義されたすべての関数変数値を使用する必要があることです。

テスト関数を直接実行することはできません。別の関数を経由する必要があります。

これは、はるかに大きな問題のデモにすぎませんが、これを解決することで、私の問題は確実に解決されます。それができない場合は、多くのことを完全に再考する必要があります。

function test($p1, $p2="hello", $p3=5, $p4=true) {

}

--

function action($vars = array()) {

    $count = count($vars);

    switch($count) {

        case 1:
            $result = test($vars[0]);
            break;
        case 2:
            $result = test($vars[0], $vars[1]);
            break;
        case 3:
            $result = test($vars[0], $vars[1], $vars[2]);
            break;
        case 4:
            $result = test($vars[0], $vars[1], $vars[2], $vars[3]);
            break;

    }

    return $result;

}

--

action(array(1, "test"));
4

2 に答える 2

5
call_user_func_array('test', $vars);

http://php.net/call_user_func_array

于 2013-03-30T23:09:45.067 に答える