2012-08-03 96 views
1

我试图从一个数组添加一个键和值(关联)到另一个数组,其中一个特定的键和值匹配。这里有两个数组:多维数组 - 添加一个键和值,其中一个键和值匹配

$array1 = array(
      1 => array(
       'walgreens' => 'location', 
       'apples' => 'product1', 
       'oranges' => 'product2' 
      ), 
      2 => array(
       'walmart' => 'location', 
       'apples' => 'product1', 
       'oranges' => 'product2', 
       'milk' => 'product3' 
      ) 
     ); 
$array2 = array(
      1 => array(
       'walgreens' => 'location', 
       'apples' => 'product1', 
       'oranges' => 'product2', 
       'bananas' => 'product3', 
      ) 
    ); 

下面是我在修改$array1有钥匙“香蕉”和值“产品3”所做的尝试:

$dataCJ = getCJItem($isbn); 
     foreach ($array1 as $subKey => $subArray) { 
      foreach($subArray as $dkey => $dval){ 
       foreach($array2 as $cjk => $cjv){ 
        foreach($cjv as $cjkey => $cjval){ 
         if($dval['walgreens'] == $cjval['walgreens']){ 
           $dval['bananas'] = $cjval['bananas']; 
         } 
        } 
       } 
      } 
     } 

这是行不通的。我怎样才能解决这个问题?

+0

你想为你的输入例子输出什么? – kirilloid 2012-08-03 20:41:25

+0

不需要输出格式就很难锻炼。 – raidenace 2012-08-03 20:58:51

回答

3

更改=> $dval=> &$dval。目前,您正在创建并写入一个新变量,并且更新不会在原地进行。

+0

非常感谢您的支持!帮助我太多了! – Lizzie 2017-02-17 16:50:21

2

我会看看array_merge()函数!

这是start with the PHP doc


针对您的特殊情况下,可以做到以下几点:

foreach($array1 as $key1 => $values1){ 
    foreach($array2 as $key2 => $values2){ 
     if($values1[0] == $values2[0]){ 
      $array1[$key1] = array_merge($values1, $values2); 
     } 
    } 
} 

注意,以简化你应该逆第一个关键问题=>值对数组。

有数组这样会有很多傻笑:

array(
    'location' => "The location (eg:walgreens)", 
    //... 
); 

这种方式,你可以改变比较以下代替:

$values1['location'] == $values2['location'] 

这将是在数组的情况下更安全不是建立在第一对位置上。

相关问题