2011-12-01 88 views
1

我有兩個PHP數組像這樣:如何合併兩個2D php數組,同時我想合併一些值?

Array 
(
[0] => Array 
    (
     [id] => 712 
     [count] => 5 
    ) 

[1] => Array 
    (
     [id] => 5510 
     [count] => 3 
    ) 
) 

Array 
(
[0] => Array 
    (
     [id] => 856 
     [count] => 7 
    ) 

[1] => Array 
    (
     [id] => 5510 
     [count] => 10 
    ) 
) 

現在我要作出這樣的合併結果:

Array 
(
[0] => Array 
    (
     [id] => 712 
     [count] => 5 
    ) 

[1] => Array 
    (
     [id] => 856 
     [count] => 3 
    ) 
[2] => Array 
    (
     [id] => 5510 
     [count] => 13 
    ) 
) 

只需添加count了那些具有相同id的。
當然,真實數組比上面的例子複雜得多。

你能告訴我一個方法來處理這個嗎?

+0

如果它只有兩列這樣的,我將其轉化爲一個鍵=>值數組並重復該操作 – JohnP

回答

1

這應該爲你工作

/** 
* merge counts for arrays 
* @param array $arrays,... 
* @return array 
*/ 
function merge_counts(){ 

    $arrays = func_get_args(); 

    $ret = array(); 

    foreach($arrays as $arr){ 
     foreach($arr as $item){ 
      if(array_key_exists($k = $item['id'], $ret)){ 
       $ret[$k]['count'] += $item['count']; 
      } 
      else { 
       $ret[$k] = $item; 
      } 
     } 
    } 

    return array_values($ret); 
} 

使用

$result = merge_counts($one, $two);  
print_r($result); 

// alternatively... 
// $result = merge_counts($one, $two, $three, ...); 

輸出

Array 
(
    [0] => Array 
     (
      [id] => 712 
      [count] => 5 
     ) 

    [1] => Array 
     (
      [id] => 5510 
      [count] => 13 
     ) 

    [2] => Array 
     (
      [id] => 856 
      [count] => 7 
     ) 

) 
+0

謝謝!這是我想要的答案! – Aloong