2013-06-03 85 views
1

我有一个数组,看起来像这样:PHP:拉值的foreach()嵌套阵列,运行函数,返回一个2级嵌套数组

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

我所试图做的是拉两个来自每个嵌套数组('id'和'name')的值,对它们运行一个函数,然后返回一个嵌套的数组。因此,对于每一个“身份证”和“名”传递到“功能的工作($ ID,$名)”,它返回一个数组,使得产生的阵列看起来像这样:

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在这种情况下似乎不是一个选项? ),特别是如何将嵌套数组返回到另一个嵌套数组。

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

回答

1
foreach ($array as $key => $value){ 
    $array[$key]['restaurants'] = work($value['id'],$value['name']); 
} 

function work($id,$name){ 
    $results = array(); 
    ///process data 
    return $results; 
} 
1

尝试是这样的:

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

Demo with a dummy function

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

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