2

我确信必须有办法做到这一点:

我想要这样如果我调用这样的函数......

callFunction("var1","var2","var3");

函数“callFunction”会将这些变量转换为数组,即:

$array[0] = "var1";
$array[1] = "var2";
$array[2] = "var3";

无论调用函数时列出了多少变量,我都希望它生成这个数组,这可能吗?

4

3 回答 3

8

您可以简单地执行以下操作:

function callFunction() {
    $arr = func_get_args();
    // Do something with all the arguments
    // e.g. $arr[0], ...
}

func_get_args将返回传递给函数的所有参数。您甚至不需要在函数头中指定它们。

func_num_args将产生传递给函数的参数数量。我不完全确定为什么存在这样的事情,因为你可以 simple count(func_get_args()),但我认为它存在是因为它在 C 中存在(实际上是必要的)。

如果您再次用不同的语言寻找这种功能,它通常被称为Variadic Function,如果您需要快速谷歌它,它通常被称为“varargs” :)

于 2012-10-01T09:25:08.673 回答
0

只需func_get_args()从该函数返回:

function callFunction(){
    return func_get_args();
}

$array = callFunction("var1","var2","var3","var4","var5");
var_dump($array);

/*array(5) {
  [0]=>
  string(4) "var1"
  [1]=>
  string(4) "var2"
  [2]=>
  string(4) "var3"
  [3]=>
  string(4) "var4"
  [4]=>
  string(4) "var5"
}*/
于 2012-10-01T09:25:35.197 回答
0

像这样调用你的函数。

callFunction( array("var1", "var2", "var3", "var4", "var5") );

并像这样创建您的功能。

function callFunction($array)
{
    //here you can acces your array. no matter how many variables are listed when calling the function.
    print_r($array);
}
于 2012-10-01T10:09:20.103 回答