显然这是非常糟糕的代码,但我想不出如何改进它。 “测试”功能根本无法改变,但其余部分都可以改变。
我想将一个值数组传递给一个操作测试函数的函数。关键是我需要在测试函数中使用所有预定义的函数变量值,而无需重新声明它们。
我不能直接操作测试功能,它必须经过另一个功能。
这只是一个更大问题的演示,但解决这个问题肯定会解决我的问题。如果无法完成,我需要完全重新思考很多事情。
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"));
答案 0 :(得分:5)
call_user_func_array('test', $vars);
答案 1 :(得分:0)
您不需要使用“action”功能,只需在func_get_args() php函数的帮助下单独使用“test”功能即可。您不需要将数组作为参数传递,您可以使用任意数量的参数调用“test”函数。您还可以查看php中的func_get_arg()和func_num_args()函数。