2017-05-14 105 views
1

我有兩個具有相同鍵的數組,這兩個數組包含我的表的月份數據。我想這個值的總和,並在另外一個數組的形式返回的值相同的密鑰和顯示具有相同鍵的兩個數組值的總和

這裏是我的兩個陣列

數組1

Array ([0] => Array ([0] => Jan [1] => 0) 
     [1] => Array ([0] => Feb [1] => 22) 
     [2] => Array ([0] => Mar [1] => 0) 
     [3] => Array ([0] => Apr [1] => 9) 
     [4] => Array ([0] => May [1] => 1) 
     [5] => Array ([0] => Jun [1] => 0) 
     [6] => Array ([0] => Jul [1] => 0) 
     [7] => Array ([0] => Aug [1] => 0) 
     [8] => Array ([0] => Sep [1] => 0) 
     [9] => Array ([0] => Oct [1] => 0) 
     [10] => Array ([0] => Nov [1] => 0) 
     [11] => Array ([0] => Dec [1] => 0) 
    ) 

數組2:

Array ([0] => Array ([0] => Jan [1] => 0) 
     [1] => Array ([0] => Feb [1] => 0) 
     [2] => Array ([0] => Mar [1] => 18) 
     [3] => Array ([0] => Apr [1] => 1) 
     [4] => Array ([0] => May [1] => 1) 
     [5] => Array ([0] => Jun [1] => 0) 
     [6] => Array ([0] => Jul [1] => 0) 
     [7] => Array ([0] => Aug [1] => 0) 
     [8] => Array ([0] => Sep [1] => 0) 
     [9] => Array ([0] => Oct [1] => 0) 
     [10] => Array ([0] => Nov [1] => 0) 
     [11] => Array ([0] => Dec [1] => 0) 
    ) 

我也嘗試使用此代碼

function sum_arrays($array1, $array2) { 
    $array = array(); 
    foreach($array1 as $index => $value) { 
     $array[$index] = isset($array2[$index]) ? $array2[$index] + $value : $value; 
    } 
    return $array; 
} 

我想要導致像下面

Array ([0] => Array ([0] => Jan [1] => 0) 
     [1] => Array ([0] => Feb [1] => 22) 
     [2] => Array ([0] => Mar [1] => 18) 
     [3] => Array ([0] => Apr [1] => 10) 
     [4] => Array ([0] => May [1] => 2) 
     [5] => Array ([0] => Jun [1] => 0) 
     [6] => Array ([0] => Jul [1] => 0) 
     [7] => Array ([0] => Aug [1] => 0) 
     [8] => Array ([0] => Sep [1] => 0) 
     [9] => Array ([0] => Oct [1] => 0) 
     [10] => Array ([0] => Nov [1] => 0) 
     [11] => Array ([0] => Dec [1] => 0) 
    ) 
+0

請提供代碼,您tried.art獲得良好的答案就在於提出好的問題 – Billa

回答

1

array_map的方法(如果2個數組有個月在相同的順序):

// shortened array samples 
$arr1 = [ 
    ["Jan", 0], 
    ["Feb", 22], 
    ["Mar", 0] 
]; 

$arr2 = [ 
    ["Jan", 0], 
    ["Feb", 0], 
    ["Mar", 18] 
]; 

$result = array_map(function($a, $b){ 
    return [$a[0], $a[1] + $b[1]]; 
}, $arr1, $arr2); 

print_r($result); 

輸出:

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

    [1] => Array 
     (
      [0] => Feb 
      [1] => 22 
     ) 

    [2] => Array 
     (
      [0] => Mar 
      [1] => 18 
     ) 
) 
+0

沒有兄弟...它不工作的事件我有相同的鍵..它使結果像兩個時間相同的數組值的總和,如果我的行軍鍵是18,那麼它返回我36 –

+0

@Kiransuthar,它不能這樣。否則,你已經發布了一些其他數組,但不是實際 – RomanPerekhrest

+0

我的朋友,我已發佈..actual我的陣列..請檢查我的問題@romanperekhrestut –

0

使用foreach循環:

$sum = 0; 

foreach($items as $item) { 
    $sum += $item['qty']; 
} 

echo $sum; 

使用array_map():

echo array_sum(array_map(
    function($item) { 
     return $item['qty']; 
    }, $items) 
); 

使用array_reduce():

echo array_reduce($items, function($carry, $item) { 
    $carry += $item['qty']; 
    return $carry; 
}); 
+0

我的朋友請看看我的問題我有兩個數組,我想要結果就像我的問題 –

+0

我剛給你看你可能嘗試的方法。順便說一句,不要忘記檢查:http://stackoverflow.com/questions/3286749/array-sum-of-value-based-on-same-key和http://stackoverflow.com/questions/14195916/相關鍵的相關數組和總和值 – shameemreza

+0

他的數組中沒有'qty'鍵。 – Barmar

相關問題