Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用数组过滤器PHP使用多维数组求和_Php_Arrays_Multidimensional Array - Fatal编程技术网

使用数组过滤器PHP使用多维数组求和

使用数组过滤器PHP使用多维数组求和,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,实际上我有数组值 Array ( [0] => Array ( [total_amount] => 4080 [supplier] => 81 ) [249] => Array ( [total_amount] => 8400 [supplier] => 81 ) [466] => Array ( [total_amount] => 20340 [supplier] => 82 ) [51

实际上我有数组值

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 )  
 ) 
我期望输出(每个供应商的总金额之和)

我尝试了以下代码

$new = array_filter($array, function ($var) { return ($var['supplier'] += $var['total_amount']);   });
请帮助我解决问题。

简单方法:

$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
)

array\u filter
不是为这样的任务而设计的,请使用
array\u walk
类似于:

$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'];
    }
});
$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'];
    }
});