【问题标题】:PHP: Pull values foreach() nested array, run function, return a 2nd level nested arrayPHP:拉取值 foreach() 嵌套数组,运行函数,返回第二级嵌套数组
【发布时间】:2013-05-29 16:44:56
【问题描述】:

我有一个如下所示的数组:

Array
(
    [0] => Array
        (
        [id] => abc
        [name] => Charlotte
        [state] => NC
        )
    [1] => Array
        (
        [id] => def
        [name] => Tampa
        [state] => FL
        )
)

我要做的是从每个嵌套数组(“id”和“name”)中提取两个值,在它们上运行一个函数,然后返回一个嵌套数组。因此,对于每个 'id' 和 'name',将其传递给“function work($id,$name)”,它会返回一个数组,结果数组如下所示:

Array
(
    [0] => Array
        (
        [id] => abc
        [name] => Charlotte
        [state] => NC
        [restaurants] => Array (
                               [rname] => Good Burger
                               [rname] => McD
                               )
        )
    [1] => Array
        (
        [id] => def
        [name] => Tampa
        [state] => FL
        [restaurants] => Array (
                               [rname] => BK
                               [rname] => White Castle
                               )
        )
)

我在这里的搜索发现了几种从原始数组中提取值的方法(foreach() 循环),但我不确定将这些值传递给函数的最佳方法(array_walk 似乎不是这种情况下的选项?),尤其是如何将嵌套数组返回到另一个嵌套数组中。

很高兴提供澄清是必要的。

【问题讨论】:

    标签: php arrays function multidimensional-array nested-loops


    【解决方案1】:

    试试这样的:

    foreach($cities as &$city){
        $city['restaurants'] = work($city['id'],$city['name']);
    }
    

    Demo with a dummy function.

    &$city 告诉 PHP 您希望能够修改循环中的记录(传递数组 by reference 而不是作为副本)。

    之后,您可以简单地将restaurants 值设置为work 函数返回的数组。

    【讨论】:

      【解决方案2】:
      foreach ($array as $key => $value){
         $array[$key]['restaurants'] = work($value['id'],$value['name']);
      }
      
      function work($id,$name){
          $results = array();
          ///process data
          return $results;
      }
      

      【讨论】:

        猜你喜欢
        • 2020-01-08
        • 1970-01-01
        • 2011-04-10
        • 2011-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多