【问题标题】:Access an Array Returned by a Function [duplicate]访问函数返回的数组[重复]
【发布时间】:2010-12-12 11:17:34
【问题描述】:

有没有办法直接访问数组中返回的数据而不需要临时变量?

目前,我的代码如下:

function getData($id) {
    // mysql query
    return mysql_fetch_array($result);
}

$data = getData($id);
echo $data['name'];

有没有不带临时变量的直接获取返回数据的方法?

【问题讨论】:

  • 您也可以将函数返回值包装在current()key()reset()each() 中,以便在一行中访问特定元素。

标签: php arrays function variables return


【解决方案1】:

PHP 5.4 添加了数组解引用,下面是 PHP 的 Array documentation 的示例:

示例 #7 数组解引用

function getArray() {
    return array(1, 2, 3);
}

// on PHP 5.4
$secondElement = getArray()[1];

// previously
$tmp = getArray();
$secondElement = $tmp[1];

【讨论】:

    【解决方案2】:

    对于数组,答案是否定的,但您可以使用对象:

    function getData($id) {
       // mysql query
       return mysql_fetch_object($result);
    }
    
    echo getData($id)->name;
    

    【讨论】:

      【解决方案3】:

      不是真的。不过,您可以定义一个函数来执行此操作:

      function array_value($array, $key) {
          return $array[$key];
      }
      
      // and then
      echo array_value(getData($id), 'name');
      

      在这种情况下可能对您没有太大帮助的唯一其他方法是使用list(),它将为您提供返回数组中的第一个n 项目。不过,您必须事先知道列表中项目的顺序:

      function test() {
          return array(1, 2, 3, 4);
      }
      
      list($one, $two, $three) = test();
      // now $one is 1, $two is 2, $three is 3
      

      【讨论】:

        【解决方案4】:

        我前段时间问过similar question

        简短的回答是不,你不能。但是,如果您只需要数组中的第一个值,则可以使用 reset():

        function getArray()
        {
            array('la', 'li', 'lu');
        }
        echo reset(getArray()); // echos "la"
        

        【讨论】:

          【解决方案5】:

          很遗憾,没有。

          你可以这样做:

          function getData($id) {
              // mysql query
              return mysql_fetch_array($result);
          }
          
          foreach(getData("your_input_query") as $key=>$value){
             echo $value;
          }
          

          然后您可以使用 switch 或 if/else 语句仅在返回的数据等于某个值(在本例中为 if $key == 'name')时对返回的数据执行其他功能。

          简而言之,设置该临时变量并以这种方式访问​​它要容易得多。

          【讨论】:

            【解决方案6】:

            我认为你的问题的措辞有点错误,但我认为正在寻求完成这样的事情:

            echo getData($id)->someArrayOffset;
            

            虽然您可以使用 mysql_fetch_object 执行此操作,但我将向您展示如何使用 PHP5 中的 ArrayObject 执行此操作,或者通过在 PHP 4 中返回您自己的对象,以便您可以在返回对象的函数之外找到它的用处为你。这是您在 PHP5 中使用 ArrayObject 的相同函数:

            function getData($id) {
                // mysql query
                return new ArrayObject( mysql_fetch_array($result) );
            }
            
            echo getData($id)->name;
            

            【讨论】:

              猜你喜欢
              • 2014-09-25
              • 2010-11-30
              • 2011-09-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-02-03
              相关资源
              最近更新 更多