如何将可变数量的参数传递给 PHP 函数
2022-08-30 07:11:03
我有一个PHP函数,它接受可变数量的参数(使用和),但是我想传递函数的参数数量取决于数组的长度。有没有办法调用具有可变参数数的PHP函数?func_num_args()
func_get_args()
我有一个PHP函数,它接受可变数量的参数(使用和),但是我想传递函数的参数数量取决于数组的长度。有没有办法调用具有可变参数数的PHP函数?func_num_args()
func_get_args()
如果参数位于数组中,则可能对call_user_func_array
函数感兴趣。
如果要传递的参数数取决于数组的长度,这可能意味着您可以自己将它们打包到数组中 ,并将该数组用于 的第二个参数。call_user_func_array
然后,您传递的该数组的元素将作为不同的参数由您的函数接收。
例如,如果您有此函数:
function test() {
var_dump(func_num_args());
var_dump(func_get_args());
}
您可以将参数打包到数组中,如下所示:
$params = array(
10,
'glop',
'test',
);
然后,调用该函数:
call_user_func_array('test', $params);
此代码将输出:
int 3
array
0 => int 10
1 => string 'glop' (length=4)
2 => string 'test' (length=4)
即,3个参数;就像 iof 函数是这样命名的:
test(10, 'glop', 'test');
现在,PHP 5.6.x 可以使用 ...运算符(在某些语言中也称为 splat 运算符):
例:
function addDateIntervalsToDateTime( DateTime $dt, DateInterval ...$intervals )
{
foreach ( $intervals as $interval ) {
$dt->add( $interval );
}
return $dt;
}
addDateIntervaslToDateTime( new DateTime, new DateInterval( 'P1D' ),
new DateInterval( 'P4D' ), new DateInterval( 'P10D' ) );