【问题标题】:Unlimited arguments for PHP function? [duplicate]PHP函数的无限参数? [复制]
【发布时间】:2011-06-27 22:04:16
【问题描述】:

在 php 中如何创建一个可以接受无限数量参数的函数:myFunc($p1, $p2, $p3, $p4, $p5...);

我的下一个问题是:如何将它们传递给另一个函数,例如

function myFunc($params){
  anotherFunc($params);
}

anotherFunc 会像使用anotherFunc($p1, $p2, $p3, $p4, $p5...) 调用它一样接收它们

【问题讨论】:

标签: php function arguments


【解决方案1】:
call_user_func_array('anotherFunc', func_get_args());

func_get_args 返回一个数组,其中包含传递给调用它的函数的所有参数,call_user_func_array 调用给定函数,并传递给它一个参数数组。

【讨论】:

  • +1 func_get_args 恰好适用于您需要传递任意数量的参数的情况。
【解决方案2】:

以前您应该使用func_get_args(),但在新的php 5.6 (currently in beta) 中,您可以使用... operator 而不是使用。

所以例如你可以写:

function myFunc(...$el){
  var_dump($el); 
}

$el 将包含您将传递的所有元素。

【讨论】:

    【解决方案3】:

    您是否有理由不能使用 1 个函数参数并将所有信息作为数组传递?

    【讨论】:

    • 因为这实际上是针对加载器类中的一个函数,所以您调用 load::library('name', $p1, $p2, $p3, $p4); 它会返回对新类的引用,其中 $p1... 被传递给构造函数
    【解决方案4】:

    查看用于 PHP 的 variable-length argument lists 的文档。

    你问题的第二部分指的是variable functions

    ...如果变量名附加了括号,PHP 将查找带有 与变量计算结果相同的名称,并将尝试执行它。

    【讨论】:

      猜你喜欢
      • 2011-03-05
      • 2023-01-20
      • 2010-12-07
      • 2012-03-09
      • 2012-08-23
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      相关资源
      最近更新 更多