呼叫与瓦尔PHP
问题描述:
设的动态列表功能说我有功能:呼叫与瓦尔PHP
<?php
function myFunction($param1, $param2, /*0 or more extra args*/) {
// do something with $param1 & $param2
$args = func_get_args();
$other_args = array_slice($args, 2); // get the dynamic args
// do something with $other_args
}
?>
这使来电:
<?php
myFunction($param1, $param2); // or
myFunction($param1, $param2, $param3); // or
myFunction($param1, $param2, $param3, $param4);
?>
,但我想知道是否有可能采取一个数组args来,并将它们传递到的功能,例如:
<?php
$extra_args = array($param3, $param4); // this could also be
$extra_args = array($param3, $param4, $param5); // or any length array
?>
我想通过他们作为独立的PARAMS到我的功能,例如
<?php
myFunction($param1, $param2 /* other args split up */);
?>
在此先感谢!
答
Yeap - call_user_func_array()
'。
http://www.php.net/manual/en/function.call-user-func-array.php
采用两个参数 - 的函数名(作为一个字符串 - 或可能的话,在PHP> = 5.3,匿名函数,不能确定),而params的阵列。
或者为方法,forward_static_call_array()
http://www.php.net/manual/en/function.forward-static-call-array.php
PHP的回答让JS的function.prototype.apply()
:)
+0
call_user_func_array可能会适用于我的场景 - 不能相信我没有想到:)也不知道forward_static_call_array - 但不幸的是该函数是静态的 - 尽管如此。 – Lizard 2012-07-13 18:25:23
答
call_user_func_array('myFunction',
array_merge(
array($param1,$param2),
$extra_args));
你尝试过什么?你想用一系列参数调用你的函数? – 2012-07-13 18:18:18
是的,这就是我想要做的 – Lizard 2012-07-13 18:20:12
这个问题似乎很基本。是的,只要你构建了处理它的函数,就可以将一个数组的参数传递给函数。 – Jeremy 2012-07-13 18:21:14