动态的函数输入变量数

时间:2011-06-21 11:41:40

标签: php

我对PHP有疑问。有什么方法可以创建一个具有动态数量的函数输入的函数吗?

例如,让我们调用该函数dynamic_func()

它应该适用于这两种情况,也适用于其他情况,不依赖于输入的函数数量:

 dynamic_func(1,2,3,4)
 dynamic_func(1,2,3,4,5,6)

提前致谢!

3 个答案:

答案 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那样动态