0

显然这是非常糟糕的代码,但我想不出如何改进它。“测试”功能根本无法更改,但其余的都可以。

我想将一组值传递给一个操作测试函数的函数。关键是我需要在测试函数中使用所有预定义的函数变量值而不重新声明它们。

我不能直接操作测试功能,它必须通过另一个功能。

这只是一个更大问题的演示,但解决这个问题肯定会解决我的问题。如果做不到,我需要完全重新考虑很多事情。

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 回答
0

您不需要使用“action”函数,您可以在func_get_args() php 函数的帮助下单独使用“test”函数。您不需要将数组作为参数传递,您可以使用任意数量的参数调用“测试”函数。您还可以查看 php 中的 func_get_arg() 和 func_num_args() 函数。

于 2013-03-30T23:17:07.487 回答