Php |如何将未知长度的参数数组单独传递给函数

时间:2017-04-03 18:06:42

标签: php

我有一个参数数组,用于函数。

数组中的项目数不同。我希望能够将数组中的每个项目单独传递给函数(例如...... func(arg1, arg2, arg3, arg4);)。反对只是传递整个数组。

请记住,我不知道数组的长度,它取决于我调用的函数。

4 个答案:

答案 0 :(得分:0)

在PHP中你有:

为此目的。

修改

如果你使用PHP 5.6很好,那么你有splat运算符。从文档(link)引用示例:

<?php
function add($a, $b, $c) {
    return $a + $b + $c;
}

$operators = [2, 3];
echo add(1, ...$operators);

答案 1 :(得分:0)

如果你的意思是你的函数的参数是一个数组,你可以使用foreach来获取所有的数组元素:

function my_func($arg_array)
  {
  foreach($arg_array as $key=>$value)
    {
    ......
    }
  ....
  }

但是如果你的意思是你有一个具有未知数量的参数的函数,你可以使用func_get_args函数返回一个包含参数作为数组的数组。

function my_func()
  {
  foreach(func_get_args() as $key=>$value)
    {
    ......
    }
  ....
  }

答案 2 :(得分:0)

自PHP 5.6起,您拥有Variable-length argument lists,因此您可以像这样调用您的函数:

$arr = array(1, 2, 5, "ten");

您可以将$arr中的所有元素发送到函数中,方法如下:

myFunc(...$arr);

答案 3 :(得分:0)

使用:call_user_func_array("functionName", $arrayofArgs);

<?php

function unknown($arg1,$arg2,$arg3){
  echo "arg1 = $arg1 <br>";
  echo "arg1 = $arg2 <br>";
  echo "arg1 = $arg3 <br>";

}


$array = [
  "arg1" => "Hi",
  "arg2" => "Marhaba",
  "arg3" => "Hola",
  "arg4" => "foo"
];

call_user_func_array("unknown", $array);
 ?>

你可以通过将第一个param作为[“className”,“methodName”]的数组传递来调用类中的函数

  

php文件:   http://php.net/manual/en/function.call-user-func-array.php