【问题标题】:Can a PHP function accept an unlimited number of parameters? [duplicate]PHP 函数可以接受无限数量的参数吗? [复制]
【发布时间】:2011-03-05 22:35:23
【问题描述】:

在 PHP 中有像 unset() 这样的函数,它支持我们向它们抛出的任意数量的参数。

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

任何想法,如何做到这一点?

【问题讨论】:

  • 如果您将来打算对此事进行更多研究,您要查找的术语是variadic function。链接的 Wikipedia 文章甚至包含一个 PHP 示例。
  • 如果您认为函数将来有可能发生变化,您可能希望将字符串变量与parse_str 一起使用。

标签: php function arguments


【解决方案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

【讨论】:

【解决方案2】:

如果您使用的是 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 版本 ,那么您可以使用 func_num_args()func_get_arg()func_get_args() 函数访问无限参数。

【讨论】:

    【解决方案3】:

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

    function sum(...$numbers) 
    

    functions.variable-arg-list

    【讨论】:

      【解决方案4】:

      在 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', '.'));
      ?>
      

      【讨论】:

        【解决方案5】:

        您可以使用 3 个函数来使用它。有这样的函数声明:

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

        可以使用的功能如下

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

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

        func_get_args() 它返回提供的参数数组。

        【讨论】:

          【解决方案6】:

          您可以在您的函数范围内使用这些函数:

          • 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);
          }
          

          【讨论】:

            【解决方案7】:

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

            【讨论】:

              猜你喜欢
              • 2011-06-27
              • 1970-01-01
              • 1970-01-01
              • 2013-10-26
              • 2012-06-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-12-15
              相关资源
              最近更新 更多