2012-08-03 123 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'] 

這將是在數組的情況下更安全不是建立在第一對位置上。

相關問題