【问题标题】:Php writing a function with unknown parameters?php写一个参数未知的函数?
【发布时间】:2011-11-01 02:21:43
【问题描述】:

我将如何在 php 中编写一个带有未知数量参数的函数,例如

function echoData (parameter1, parameter2,) {
    //do something
}

但是当你调用函数时你可以使用:

echoData('hello', 'hello2', 'hello3', 'hello'4);

这样可以发送更多的参数,因为参数的数量是未知的。

【问题讨论】:

标签: php


【解决方案1】:

func_get_args()

function echoData(){
    $args = func_get_args();
}

请注意,虽然您可以这样做,但如果您要使用 func_get_args(),则不应在函数声明中定义任何参数 - 仅仅是因为如果/当任何已定义的参数被省略时,它会变得非常混乱

关于参数的类似函数

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

【讨论】:

  • 请注意,虽然您可以这样做,但如果您要使用 func_get_args(),则不应在函数声明中定义任何参数 - 只是因为如果/当任何已定义的参数被省略。
  • @Dave:不错的收获。我会把它添加到我的答案中
【解决方案2】:

仅适用于在 Google 上找到此主题的人。

In PHP 5.6 and above you can use ...指定未知数量的参数:

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

echo sum(1, 2, 3, 4); // 10

$numbers 是一个参数数组。

【讨论】:

    【解决方案3】:

    使用 func_get_args() 来检索一个包含所有参数的数组:

    $args = func_get_args();
    

    然后,您可以使用该数组或对其进行迭代,只要最适合您的用例。

    【讨论】:

      【解决方案4】:

      你也可以使用数组:

      <?php    
      function example($args = array())
      {
          if ( isset ( $args["arg1"] ) )
              echo "Arg1!";
      }
      
      example(array("arg1"=>"val", "arg2"=>"val"));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-30
        • 2012-02-15
        • 1970-01-01
        相关资源
        最近更新 更多