2017-06-20 86 views
-2

實際上多維陣列陣列薩姆我有數組值使用陣列篩選PHP

Array ([0] => Array ([total_amount] => 4080 [supplier] => 81) 
     [249] => Array ([total_amount] => 8400 [supplier] => 81) 
     [466] => Array ([total_amount] => 20340 [supplier] => 82) 
     [519] => Array ([total_amount] => 2100 [supplier] => 83) 
     [1078] => Array ([total_amount] => 40199 [supplier] => 83) 
) 

和我期望

Array ([81] => 12480 
     [82] => 20340 
     [83] => 42299 
     ) 

和i(每個供應商的總量之和)的輸出嘗試以下代碼

$new = array_filter($array, function ($var) { return ($var['supplier'] += $var['total_amount']); }); 

請幫我解決我的問題。

回答

0

簡單的方法:

$result = []; 
foreach ($arr as $a) { // $arr is your initial array 
    (isset($result[$a['supplier']]))? 
     $result[$a['supplier']] += $a['total_amount'] 
     : $result[$a['supplier']] = $a['total_amount']; 
} 

print_r($result); 

輸出:

Array 
(
    [81] => 12480 
    [82] => 20340 
    [83] => 42299 
) 
0

array_filter不適合這樣的任務,使用array_walk insted的,如:

$new = []; 
array_walk($array, function ($var) use (&$new) { 
    if(isset($new[$var['supplier']])){ 
     $new[$var['supplier']] += $var['total_amount']; 
    }else{ 
     $new[$var['supplier']] = $var['total_amount']; 
    } 
});