为新手问题道歉,但我有一个带两个参数的函数,一个是数组,一个是变量function createList($array, $var) {}
。我有另一个函数调用createList只有一个参数,$ var,doSomething($var);
它不包含数组的本地副本。我怎样才能将一个参数传递给一个在PHP中需要两个的函数?
function createList (array $args = array()) {
//how do i define the array without iterating through it?
$args += $array;
$args += $var;
}
答案 0 :(得分:27)
如果您可以使用PHP 5.6+,那么可以使用变量参数的新语法:省略号关键字。
它只是将所有参数转换为数组。
function sum(...$numbers) {
$acc = 0;
foreach ($numbers as $n) {
$acc += $n;
}
return $acc;
}
echo sum(1, 2, 3, 4);
Doc:... in PHP 5.6+
答案 1 :(得分:8)
你有几个选择。
首先是使用可选参数。
function myFunction($needThis, $needThisToo, $optional=null) {
/** do something cool **/
}
另一种方法是避免命名任何参数(此方法不是首选方法,因为编辑器无法提示任何内容,方法签名中没有文档)。
function myFunction() {
$args = func_get_args();
/** now you can access these as $args[0], $args[1] **/
}
答案 2 :(得分:4)
您可以在函数声明中指定无参数,然后使用PHP的func_get_arg或func_get_args来获取参数。
function createList() {
$arg1 = func_get_arg(0);
//Do some type checking to see which argument it is.
//check if there is another argument with func_num_args.
//Do something with the second arg.
}