【问题标题】:Pass arguments from a function to another function将参数从一个函数传递给另一个函数
【发布时间】:2011-08-14 00:42:41
【问题描述】:

我有这样的事情

  function f1($name = ''){
    f2("prefix_{$name}", $args);
  }

f1() 函数调用如下:

f1('name', $var1, $var2, $var3);

如何将这些变量传递给其中的 f2(),就像它们传递给 f1() 一样?

所以而不是f2("prefix_{$name}", $args);

应该是f2("prefix_{$name}", $var1, $var2, $var3);

并不是说我无法控制 f2 函数 :(

【问题讨论】:

    标签: php function arguments


    【解决方案1】:
    function f1( $name = '' )
    {
        // get all arguments to this function
        $args = func_get_args();
        // prefix the first arguments with some prefix
        $args[ 0 ] = 'prefix_' . $name;
        // call the second function with the $args array as its arguments
        call_user_func_array( 'f2', $args );
    }
    

    编辑:
    替换

    $args[ 0 ] = 'prefix_' . $args[ 0 ];
    

    $args[ 0 ] = 'prefix_' . $name;
    

    说明Gerry said in his answer

    【讨论】:

      【解决方案2】:

      常规的 func_get_args() 不会考虑任何默认参数,因此您需要执行以下操作:

      function func_get_default_args($a) {
          $args = array_slice(func_get_args(), 1);
          return array_merge($args, array_slice($a, sizeof($args)));
      }
      
      function f1($name = ''){
          call_user_func_array('f2', func_get_default_args(func_get_args(), $name));
      }
      

      【讨论】:

        猜你喜欢
        • 2012-08-02
        • 2012-09-25
        • 2020-10-03
        • 2014-01-06
        • 2019-10-09
        • 1970-01-01
        • 1970-01-01
        • 2011-03-09
        相关资源
        最近更新 更多