【问题标题】:Pass an array to a function in PHP?将数组传递给PHP中的函数?
【发布时间】:2013-07-05 01:32:45
【问题描述】:

是否有可能将数组传递给像这个示例函数这样的函数:

send_mail($adress, $data)
{
    return $data[0];
}

?

那么输入变量可以是一个数组吗?如果是的话,有人能给我举个例子吗?

【问题讨论】:

  • 通过函数返回数组还是将数组传递给函数?
  • 是的。例如:上面;你的代码。
  • @itachi 它似乎并没有以这种方式工作。 To: user4035 将数组传递给函数。
  • It doesn't seem to work. 是什么错误? 附言。您的标题、问题和评论相互矛盾。在标题中,您想要返回一个数组,在评论中,您想要将一个数组传递给一个函数。您的确切需要是什么?
  • @itachi 传递一个数组以按照他在评论中所说的那样运行。

标签: php arrays function user-defined-functions


【解决方案1】:

不确定这是否是您要询问的内容,但您可以使用以下命令访问所有参数:http://php.net/manual/en/function.func-get-args.php

这样您就可以将任意数量的参数传递给您的函数并从 func_get_arg 中获取它们。

这是你要问的吗?

【讨论】:

    【解决方案2】:

    将数组传递给函数

    function addall($array_var){
    <do something using the array $array_var>
    }
     $array_var=array(1,2,3,4);
    
    addall($array_var);
    

    从函数返回数组

        function addall($i,$j,$k,$l){
    $array_var=array($i,$j,$k,$l);
    return $array_var
    }
    
    $array_var=array(1,2,3,4);
    
    addall(1,2,3,4);
    

    P.S: 函数可以有任何参数,每个参数可以是单个 var 或数组。

    【讨论】:

    • 你在定义一个函数之前调用它。
    【解决方案3】:

    是否可以将数组传递给示例中的函数?

    是的,将函数传递给您的send_mail 非常好。但是您在函数内部进行的[0] 访问有点危险:

    send_mail($adress, $data)
    {
        return $data[0];
    }
    

    如果$data 是一个空数组怎么办?您应该检查第一个元素是否存在(使用 (count($data) &gt; 0) 或任何其他等效项),然后才使用它。

    PHP中还有一个小东西叫type hinting,它会强制send_mail的用户使用数组变量,否则会触发PHP错误:

    send_mail($adress, array $data) { ... }
    

    你应该尽可能地使用它,以获得更健壮的代码。

    【讨论】:

      【解决方案4】:

      您可以将数组传递给函数,并从函数返回数组。默认情况下,数组按值传递(标量),这意味着它是数组的副本,函数内的更改不会影响原始数组。

      在第一个函数调用之后的代码中,不会影响 tempArray 的内容。在第二个函数调用中,即使用与号 (&)通过引用 传递,原始数组被更改。

      $tempArray = array();
      $tempArray[] = "hello";
      
      function testFn($theArray) {
          $theArray[] = "there";
          return $theArray;
      }
      
      $result = testFn($tempArray);
      echo print_r($result);    // hello, there
      echo print_r($tempArray);    // hello
      
      function testFnRef(&$theArray) {
          $theArray[] = "there";
          return $theArray;
      }
      
      $result = testFnRef($tempArray);
      echo print_r($result);    // hello, there
      echo print_r($tempArray);    // hello, there
      

      function arguments

      【讨论】:

        猜你喜欢
        • 2012-07-19
        • 2013-01-16
        • 2010-10-09
        • 2012-06-01
        • 1970-01-01
        • 2017-11-07
        • 2013-03-21
        • 1970-01-01
        相关资源
        最近更新 更多