我对PHP有疑问。有什么方法可以创建一个具有动态数量的函数输入的函数吗?
例如,让我们调用该函数dynamic_func()
它应该适用于这两种情况,也适用于其他情况,不依赖于输入的函数数量:
dynamic_func(1,2,3,4)
dynamic_func(1,2,3,4,5,6)
提前致谢!
答案 0 :(得分:4)
它正常工作。
function dynamic_func()
{
$args=func_get_args(); //get all the arguments as an array
}
dynamic_func(1,2,3,4); //will work
dynamic_func(1,2,3,4,5,6); //will work
答案 1 :(得分:3)
我相信如果您传递的参数多于函数所期望的参数,PHP将永远不会抱怨。 E.g:
<?php
function foo($a) {
}
foo(); // invalid (Warning: Missing argument 1 for ...)
foo('a'); // valid
foo('a', 'b'); // surprise... valid!
因此,您可以使用foo()
内的func_get_args()
和func_num_args()
来检测实际传递给该函数的参数数量:
<?php
function foo(/*$a*/) {
echo func_num_args();
var_dump(func_get_args());
}
foo('a', 'b');
休息取决于你。
答案 2 :(得分:0)
有两种可能性可以做到这一点:像Shakti Singh一样使用func_get_args
解释或预定义像这样的论点
function myfunc($arg1 = 1, $arg2 = 2, $arg3 = 3){
echo $arg1.' '.$arg1.' '.$arg3;
}
myfunc(); // outputs "1 2 3";
myfunc(9,8); // outputs "9 8 3";
请注意,您可以将参数设置为在未给出参数时使用的任何默认值,但您必须使用此参数定义所有参数 - 它不像使用func_get_args
那样动态