是否可以创建一个PHP函数,通过引用获取所有参数的可变数量的参数?
它没有帮助我通过引用接收一个值数组的函数,也没有一个函数将其参数包含在一个对象中,因为我正在处理函数组合和参数绑定.不要考虑呼叫时间传递参考.那东西甚至不应该存在.
php parameter-passing pass-by-reference variadic-functions function-parameter
除了用值声明可选变量之外,谷歌勋爵没有给我任何东西,这样它们就可以被传递到代码中而不会给你一个错误。在 PHP 中甚至有等价于 *Args 或 **kwargs 吗?
干杯
我想包装一个带有无限数量参数的现有函数,例如这是现有的函数:
function T()
{
$args = func_num_args();
// Do stuff with arguments.
}
Run Code Online (Sandbox Code Playgroud)
我现在想把它包起来,例如
/*
* This function shall also take unlimited arguments,
* and just pass them on to T().
*/
function myT()
{
// TODO: Take all arguments and pass them on to T().
$result = T();
// Do stuff with the result of T().
}
Run Code Online (Sandbox Code Playgroud)
但是,我想不出如何通过无限的参数上T()在myT().
显然,这是非常糟糕的代码,但我无法思考如何改进它."测试"功能根本无法改变,但其他所有功能都可以.
我想将一个值数组传递给一个操作测试函数的函数.关键是我需要在测试函数中使用所有预定义的函数变量值,而无需重新声明它们.
我不能直接操作测试功能,它必须通过另一个功能.
这只是一个更大问题的演示,但解决这个问题肯定会解决我的问题.如果无法完成,我需要完全重新思考很多事情.
function test($p1, $p2="hello", $p3=5, $p4=true) {
}
Run Code Online (Sandbox Code Playgroud)
-
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;
}
Run Code Online (Sandbox Code Playgroud)
-
action(array(1, "test"));
Run Code Online (Sandbox Code Playgroud)