我有一个PHP函数,它接受可变数量的参数(使用func_num_args()
和func_get_args()
),但是我想要传递给该函数的参数数量取决于数组的长度。有没有办法用可变数量的参数调用PHP函数?
发布于 2009-09-14 16:38:41
如果您的参数在数组中,您可能会对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个参数;与函数的调用方式完全相同:
test(10, 'glop', 'test');
发布于 2014-01-28 01:06:23
这是现在的possible with PHP 5.6.x,使用...运算符(在某些语言中也称为拆分运算符):
示例:
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' ) );
发布于 2014-01-18 03:00:42
对于那些正在寻找使用$object->method
实现这一点的人来说
call_user_func_array(array($object, 'method_name'), $array);
我在一个构造函数中成功地实现了这一点,该函数使用变量参数调用变量method_name。
https://stackoverflow.com/questions/1422652
复制相似问题