我有一个PHP函数,它可以接收不定数量的参数。
如果我这样调用它:
没问题,但是如果我这样调用它:
function foo() {
$numargs = func_num_args();
if ($numargs < 3) {
die("expected number of args is 3, not " . $numargs);
}
...
如果我这样调用它:
foo(1, 12, 17, 3, 5);
没问题,但是如果我这样调用它:
$str = "1, 12, 17, 3, 5";
foo($str);
出错是因为它说我只传递了一个参数。如果我不想改变函数本身,只想改变调用方法,我需要做出哪些改变呢。
-- 更新:为了避免使用explode函数,我简单地构建了一个数组。由于该函数是成员函数,所以调用方式会有些不同。最终代码如下:
$list = array();
$list[] = 1;
$list[] = 12;
$list[] = 17;
// etc.
call_user_func_array(array($this, 'foo'), $list);
我认为这可能对其他人有用。