如何将可变数量的参数传递给 PHP 函数

2022-08-30 07:11:03

我有一个PHP函数,它接受可变数量的参数(使用和),但是我想传递函数的参数数量取决于数组的长度。有没有办法调用具有可变参数数的PHP函数?func_num_args()func_get_args()


答案 1

如果参数位于数组中,则可能对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');

答案 2

现在,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' ) );

推荐