【问题标题】:Pass variable function arguments on to another function in PHP [duplicate]将变量函数参数传递给PHP中的另一个函数[重复]
【发布时间】:2018-08-24 13:56:50
【问题描述】:

我想将可变函数参数传递给一个函数foo,然后让foo 将可变函数参数传递给另一个函数bar

同时,初始调用者也应该能够直接使用可变函数参数调用bar

我该怎么做,因为$args 在到达foo 时会转换为数组,因此不能作为变量函数参数传递?

function bar($prefix, ...$args) {
  foreach($args as $arg)
    echo "bar: $prefix: $arg\n";
}

function foo($prefix, ...$args) {
  echo "Just passing through...\n";
  foreach($args as $arg)
    echo "foo: $prefix: $arg\n";
  bar($prefix, $args); // wrong, since $args is now an array
}

foo("Idefix", "FOO", "BAR");
bar("Obelix", "ABC", "DEF");

【问题讨论】:

  • 我不同意。首先,我链接的问题是 2 年前回答的,答案质量更好。当未来的新手开发人员寻找这个问题的答案时,他们应该偶然发现这个问题。其次,它不是关于上下文,而是关于问题及其答案的清晰性。上下文可能对您有意义,但其他人也会从中受益吗?如果您确实有一些有价值的东西要添加,您可以对旧问题发表评论,但不建议这样做。

标签: php


【解决方案1】:

只需将foo 中的bar 调用更改为也使用variable arguments。这会将$args 传播回各个参数,然后将这些参数合并回bar 内的数组中。

function bar($prefix, ...$args) {
  foreach($args as $arg)
    echo "bar: $prefix: $arg\n";
}
function foo($prefix, ...$args) {
  echo "Just passing through...\n";
  foreach($args as $arg)
    echo "foo: $prefix: $arg\n";
  bar($prefix, ...$args);
}

foo("Idefix", "FOO", "BAR");
bar("Obelix", "ABC", "DEF");

输出:

Just passing through...
foo: Idefix: FOO
foo: Idefix: BAR
bar: Idefix: FOO
bar: Idefix: BAR
bar: Obelix: ABC
bar: Obelix: DEF

【讨论】:

    【解决方案2】:

    如果 bar() 不使用数组,你应该通过 $arg 而不是 $args

      function foo($prefix, ...$args) {
        echo "Just passing through...\n";
        foreach($args as $arg)
          echo "foo: $prefix: $arg\n";
        bar($prefix, $arg); 
      } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-10
      • 2014-03-08
      • 2013-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多