我想创建一个函数(my_function()),该函数获取无限数量的参数并将其传递给另一个函数(call_another_function())
function my_function() {
another_function($arg1, $arg2, $arg3 ... $argN);
}
因此,要致电my_function(1,2,3,4,5)并开始致电another_function(1,2,3,4,5)
我知道我应该使用func_get_args()将所有函数参数作为数组获取,但是我不知道如何将此参数传递给另一个函数.
可以使用 call_user_func_array() 函数来传递参数数组给另一个函数。
function my_function() {
$args = func_get_args();
call_user_func_array('another_function', $args);
}
这样,如果调用 my_function(1, 2, 3, 4, 5),它会传递参数数组 [1, 2, 3, 4, 5] 给 another_function 函数。
注意:call_user_func_array 函数需要两个参数,第一个参数是要调用的函数的名称(字符串),第二个参数是要传递的参数数组。
还可以使用 forward_static_call_array 或 forward_static_call 函数来实现类似的功能。
参考
function myFunction()
{
$args = func_get_args();
call_user_func_array('otherFunction', $args);
}
function otherFunction($arg1, $arg2, $arg3)
{
// Do something with the arguments
}
myFunction('a', 'b', 'c');
代码, 用数组实现:
<?php
function another_function($args){
echo gettype($args). "\n";
foreach($args as $key=>$val){
echo $key. ":". $val."\n";
}
}
function my_function(){
$args = func_get_args();
another_function($args);
}
my_function('hello', 'world', '1');
?>
结果:
array
0:hello
1:world
2:1
或者 传入多维数组 数组KEY键可以动态传入
<?php
function another_function($params = array()){
echo gettype($params). "\n";
foreach($params as $k=>$v){
echo $k. ":". $v. "\n";
}
}
function my_function($params = array()){
another_function($params);
}
my_function(['k1'=>'v1','k2'=>'v2']);
?>
/*
array
k1:v1
k2:v2
*/