2014-03-26 21 views
1

第一陣列如何根據鍵來求和數組值?

Array 
(
    [0] => Array 
     (
      [1] => 2 
     ) 

    [1] => Array 
     (
      [1] => 2 
     ) 

    [2] => Array 
     (
      [2] => 1 
     ) 

    [3] => Array 
     (
      [3] => 1 
     ) 

) 

我要像

Array 
(
    [0] => Array 
     (
      [1] => 4 
     ) 



    [1] => Array 
     (
      [2] => 1 
     ) 

    [2] => Array 
     (
      [3] => 1 
     ) 

) 

輸出我怎樣才能做到這一點?

+0

每個子陣列裏面總是隻有一個元素嗎? –

+0

我想[0] =>數組 ( [1] => 2 ) [1] =>數組 ( [1] => 2 )爲[0] =>數組 ( [ 1] => 4 ) – Happy

+3

爲什麼你的結果每個鍵都有單獨的子數組?爲什麼不是一個包含所有結果的單個關聯數組? – Barmar

回答

1
$result = array(); 
foreach ($input as $subarray) { 
    foreach ($subarray as $key => $value) { 
     if (isset($result[$key])) { 
      $result[$key][$key] += $value; 
     } else { 
      $result[$key] = array($key => $value); 
     } 
    } 
} 
$result = array_values($result); // Convert from associative array to indexed array 
2

似乎是一個很好的例子爲array_reduce()

$res = array_chunk(array_reduce($arr, function(&$current, $item) { 
    foreach ($item as $key => $value) { 
     if (!isset($current[$key])) { 
      $current[$key] = 0; 
     } 
     $current[$key] += $value; 
    } 
    return $current; 
}, []), 1, true); 

對於我使用array_chunk()最終結果;它需要一個數組併爲每個元素創建單個元素子數組。

相關問題