2016-11-16 119 views
0

我有2個不同的陣列:合併時陣列計數相同的鍵 - 值對的第一對總和 - PHP

陣列1:

array(5) { 
    [0]=> 
    array(2) { 
    ["all_totals"]=> 
    string(1) "3" 
    ["month_name"]=> 
    string(3) "Jul" 
    } 
    [1]=> 
    array(2) { 
    ["all_totals"]=> 
    string(2) "20" 
    ["month_name"]=> 
    string(3) "Aug" 
    } 
    [2]=> 
    array(2) { 
    ["all_totals"]=> 
    string(2) "10" 
    ["month_name"]=> 
    string(3) "Sep" 
    } 
    [3]=> 
    array(2) { 
    ["all_totals"]=> 
    string(2) "14" 
    ["month_name"]=> 
    string(3) "Oct" 
    } 
    [4]=> 
    array(2) { 
    ["all_totals"]=> 
    string(3) "102" 
    ["month_name"]=> 
    string(3) "Nov" 
    } 
} 

陣列2:

array(2) { 
    [0]=> 
    array(2) { 
    ["all_totals"]=> 
    string(1) "9" 
    ["month_name"]=> 
    string(3) "Oct" 
    } 
    [1]=> 
    array(2) { 
    ["all_totals"]=> 
    string(2) "30" 
    ["month_name"]=> 
    string(3) "Nov" 
    } 
} 

爲了加入它們並且只有一個foreach循環,我合併它們:

$result = array_merge($array1, $array2); 
foreach($result as $item){ 
    //my actions here 
} 

但是,你如何注意到我在兩個數組中都有相同的key =>值對。唯一的區別是["all_totals"]的值。例如,

["all_totals"]=>"14", ["month_name"]=> "Oct"
["all_totals"]=> "9", ["month_name"]=> "Oct"

當合並我要檢查是否有這樣的鍵 - 值對,並通過具有一個這樣的元素,但總和[「all_totals」]的值,使得加入它們我不會丟失任何數據。因此,在最終的結果,我將有一個這樣的元素:

["all_totals"]=>"23", ["month_name"]=> "Oct"

任何想法?

+0

[PHP?:合併兩個數組,同時保持鍵,而不是重新索引的]的可能的複製(http://stackoverflow.com/questions/3292044/php-merge -two-arrays-while-keeping-keys-instead-of-reindexing) –

+0

我的問題與你鏈接的不同@MasivuyeCokile – aidadev

回答

1

什麼這樣羅馬:

$coll=array(); 
foreach(array($arr,$arr2) as $array){ 
foreach($array as $a){ 
    if(!isset($coll[$a['month_name']])){ 
    $coll[$a['month_name']]=$a; 
    } else { 
    $coll[$a['month_name']]['all_totals'] += $a['all_totals']; 
    } 
} 
} 
ksort($coll); 
print_r(array_values($coll)); 
+0

謝謝,我剛剛刪除了ksort(),因爲我已經在我的sql查詢中對它們進行了排序。非常感謝@JustOnUnderMillions – aidadev

相關問題