【问题标题】:Creating functions with Array as parameter not work with me使用数组作为参数创建函数不适用于我
【发布时间】:2012-09-19 00:37:14
【问题描述】:

简而言之,我有一个类似如下的函数:

function plus($x, $y){
   echo $x+$y;
}

我想以数组的形式告诉函数它的参数,如下所示:

$parms = array(20,10);
plus($parms);

但不幸的是,不起作用。 我厌倦了使用以下另一种方式:

$parms = array(20,10);
$func_params = implode(',', $parms);
plus($func_params);

而且也不起作用,并给我错误消息: Warning: Missing argument 2 for plus(), called in.....

现在,我很困惑。 我可以做什么工作?

【问题讨论】:

    标签: php function parameter-passing


    【解决方案1】:

    您可以做几件事。 首先,要维护您的函数定义,您可以使用call_user_func_array()。我觉得这很丑。

    call_user_func_array('plus', $parms);
    

    您可以通过使用可变数量的参数来使您的函数更加健壮:

    function plus(){
      $args = func_get_args();
      return $args[0] + $args[1];
    }
    

    您可以简单地接受一个数组并将所有内容相加:

    function plus($args){
      return $args[0] + $args[1];
    }
    

    或者你可以总结所有论点:

    function plus($args){
      return array_sum($args);
    }
    

    这是 PHP,有 10 种方法可以做任何事情。

    【讨论】:

    • 谢谢,第一种方法是我想要的。
    【解决方案2】:

    您需要调整您的函数,使其仅接受一个参数,然后在函数本身中处理该参数:

    非常简单的例子:

    function plus($arr){
       echo $arr[0]+$arr[1];
    }
    
    $parms = array(20,10);
    plus($parms);
    

    您可以轻松地调整它以遍历所有元素、检查输入等。

    【讨论】:

      【解决方案3】:

      嘿?错误消息非常很清楚:您在函数中要求两个参数,但您只提供了一个。

      如果你想传递一个数组,它将是一个单一的变量。

      function plus($array){
          echo ($array[0]+$array[1]);
      }
      $test = array(1,5);
      plus($test); //echoes 6
      

      【讨论】:

        【解决方案4】:

        使用这个:

        function plus($arr){
           $c = $arr[0]+$arr[1];
           echo $c;
        }
        

        你可以调用:

        $parms = array(20,10);
        plus($parms);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-01-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-11
          • 2011-06-05
          相关资源
          最近更新 更多