PHP - 可变参数



在 PHP 中,可以编写一个函数,该函数能够接受元素数量可变的参数列表。要声明可变参数列表,参数名称前要加上 "..."(三个点)符号。传递的值将收集到一个以参数名称命名的数组中。

function myfunction(...$arg) {
   Statement1;
   Statement2;
}

要调用此类函数,请在括号中放入任意数量用逗号分隔的值。

myfunction(v1, v2, v3, . . . , vn);

在函数中声明的形式参数是一个包含所有传递值的数组。我们可以使用任何合适的内置数组函数来执行该过程。

示例

在以下示例中,用户定义函数 **myfunction()** 能够接收可变数量的值并找到它们的平均值。

<?php  
   function  myfunction(...$numbers) {
      $avg = array_sum($numbers)/count($numbers);
      return $avg;
   }
   $avg = myfunction(5, 12, 9, 23, 8);
   echo "average = $avg";
?>

它将产生以下 **输出** -

average = 11.4

尝试更改传递数组的大小并再次运行程序。

可以使用 **foreach** 循环遍历函数内的数组。函数在可变长度参数之前可以有任何位置参数。从接收到的值中,将首先填充位置参数,其余参数将复制到数组中。

示例

<?php
   function myfunction($x, ...$numbers) {
      echo "First number: $x" . PHP_EOL;
      echo "Remaining numbers: ";
      foreach ($numbers as $n) {
         echo "$n  ";
      }
   }
   myfunction(5, 12, 9, 23, 8, 41);
?>

它将产生以下 **输出** -

First number: 5
Remaining numbers: 12  9  23  8  41

可变参数函数

即使没有 "..." 语法,也可以处理传递给函数的可变数量的参数。PHP 具有内置函数,如 func_num_args()、func_get_arg() 和 func_get_args(),它们可以获得类似的结果。

  • **func_num_args()** - 返回传递给函数的参数数量。

  • **func_get_arg()** - 从参数列表中返回一个项目。

  • **func_get_args()** - 返回包含函数参数列表的数组。

示例

上面的可变参数示例可以使用这些函数改写如下:

<?php
   function myfunction() {
      $sum = 0;
      foreach (func_get_args() as $n) {
         $sum += $n;
      }
      return $sum;
   }
   echo myfunction(5, 12, 9, 23, 8, 41);
?>

它将产生以下 **输出** -

98

示例

此程序打印传递给函数的所有数字:

<?php
   function myfunction() {
      $len = func_num_args();
      echo "Numbers : ";
      $i=0;
      for ($i=0; $i<$len; $i++)
      echo func_get_arg($i) . " ";
   }
   myfunction(5, 12, 9, 23, 8, 41);
?>

它将产生以下 **输出** -

Numbers : 5 12 9 23 8 41
广告