PHP函数可以接受无限数量的参数吗?

时间:2010-06-20 06:59:06

标签: php function arguments

在PHP中,有unset()等函数支持我们抛出的任意数量的参数。

我想创建一个类似的函数,它能够接受任意数量的参数并对其进行处理。

任何想法,怎么做?

7 个答案:

答案 0 :(得分:25)

在PHP中,使用函数func_get_args来获取所有传递的参数。

<?php
function myfunc(){
    $args = func_get_args();
    foreach ($args as $arg)
      echo $arg."/n";
}

myfunc('hello', 'world', '.');
?>

另一种方法是将一组变量传递给您的函数,这样您就不必使用$arg[2];之类的东西,而是可以使用$args['myvar'];或重新记录传递的内容。它也是无限可扩展的,这意味着您可以在以后添加新变量,而无需更改已编码的内容。

<?php
function myfunc($args){
    while(list($var, $value)=each($args))
      echo $var.' '.$value."/n";
}

myfunc(array('first'=>'hello', 'second'=>'world', '.'));
?>

答案 1 :(得分:11)

您可以在功能范围内使用这些功能:

  • func_get_arg()
  • func_get_args()
  • func_num_args()

一些例子:

foreach (func_get_args() as $arg)
{
    // ...
}

for ($i = 0, $total = func_num_args(); $i < $total; $i++)
{
    $arg = func_get_arg($i);
}

答案 2 :(得分:4)

您可以使用3种功能来处理此问题。有如下函数声明:

function foo()
{
    /* Code here */
}

您可以使用的功能如下

<强> func_num_args() 它返回已传递给数组的参数数量

<强> func_get_arg($index) 它返回指定索引处的参数值

<强> func_get_args() 返回提供的参数数组。

答案 3 :(得分:3)

您可以在函数内使用func_get_args()来解析任意数量的传递参数。

答案 4 :(得分:2)

如果你有PHP 5.6+,那么你可以使用

function sum(...$numbers) 

functions.variable-arg-list

答案 5 :(得分:1)

如果您使用的是PHP 5.6或更高版本,则参数列表可能包含 ... 标记,以表示该函数接受可变数量的参数。参数将作为数组传递给给定变量;只需使用 ... 即可访问无限量变量参数。

例如:

<?php
function sum(...$numbers) {
    $sum = 0;
    foreach ($numbers as $n) {
        $sum += $n;
    }
    return $sum ;
}

echo sum(1, 2, 3, 4, 5);
?>

如果您使用 PHP版本&lt; = 5.5 ,则可以使用func_num_args()func_get_arg()func_get_args()函数访问无限制参数。

答案 6 :(得分:1)

php7通过在函数定义中的参数名称之前使用省略号,为函数提供了一种简单的passing and catching unlimited parameters方法。以下是一个展示相同的例子:

<?php
function print_names(...$names){
  foreach($names AS $name) echo "The name is: <b>$name</b>.\n";
}
print_names(
  "Superman",
  "Ironman",
  "Spiderman",
  "HULK",
  "Thor",
  "Captain America",
  "Batman"
);

致谢:http://dwellupper.io/post/5/passing-unlimited-parameters-to-functions-in-php7