The following arrays have the same gid and require Num to be accumulated. Those with different gid are displayed directly without any operation. How to achieve array deduplication?
Array
(
[0] => Array
(
[id] => 1
[no] => WF20170001
[wid] => 1
[gid] => 1
[num] => 4
[price] => 2.55
[amount] => 10.20
[buyer] => 顾文君
[invoice] => 123456789
[date] => 2017-03-28
[remarks] => 测试数据
[cid] => pc001
[class] => 办公用品
[name] => 笔记本电脑
[type] => Acer Aspire E1-410G
[unit] => 台
[warehouse_name] => 办公用品仓库
)
[1] => Array
(
[id] => 3
[no] => WF20170001
[wid] => 1
[gid] => 5
[num] => 5
[price] => 100.00
[amount] => 500.00
[buyer] => 顾文君
[invoice] => 1231241
[date] => 2017-04-14
[remarks] => 入库测试
[cid] => tf001
[class] => 办公用品
[name] => 打印机碳粉
[type] => 88A
[unit] => 支
[warehouse_name] => 办公用品仓库
)
[2] => Array
(
[id] => 4
[no] => WF20170001
[wid] => 1
[gid] => 2
[num] => 1
[price] => 4500.00
[amount] => 4500.00
[buyer] => 张秀珍
[invoice] => 4558895
[date] => 2017-04-09
[remarks] => 入库测试
[cid] => pc002
[class] => 办公用品
[name] => 笔记本电脑
[type] => Acer Aspire E5-571G-58WT
[unit] => 台
[warehouse_name] => 办公用品仓库
)
[3] => Array
(
[id] => 5
[no] => WF20170002
[wid] => 1
[gid] => 3
[num] => 1
[price] => 88.00
[amount] => 88.00
[buyer] => 顾文君
[invoice] => 556789
[date] => 2017-04-09
[remarks] => 测试数据
[cid] => ow
[class] => 办公用品
[name] => 万用表
[type] => 万用表
[unit] => 台
[warehouse_name] => 办公用品仓库
)
[4] => Array
(
[id] => 12
[no] => WF20170001
[wid] => 1
[gid] => 1
[num] => 1
[price] => 2.55
[amount] => 2.55
[buyer] => 顾文君
[invoice] => 53412312
[date] => 2017-06-05
[remarks] => 无
[cid] => pc001
[class] => 办公用品
[name] => 笔记本电脑
[type] => Acer Aspire E1-410G
[unit] => 台
[warehouse_name] => 办公用品仓库
)
)
怪我咯2017-06-06 09:56:16
$arr = array(
array(
'gid' => 1,
'num' => 4,
),
array(
'gid' => 1,
'num' => 4,
),
array(
'gid' => 3,
'num' => 3,
),
array(
'gid' => 4,
'num' => 4,
),
);
$result = array();
foreach($arr as $val) {
if(!isset($result[$val['gid']])) {
$result[$val['gid']] = $val;
continue;
}
$result[$val['gid']]['num'] += $val['num'];
}
var_dump("<pre>", $result);die;
滿天的星座2017-06-06 09:56:16
You found this out from the data in the database, right? If so, directly use the sql statement to deduplicate the gid, and then use sum() to accumulate the num, and you can get the result.
習慣沉默2017-06-06 09:56:16
$ret = [['gid' => 2,'num' => 5],['gid' => 3,'num' => 5],['gid' => 2,'num' => 6]];
$newret = array();
foreach($ret as $key => $val){
$newret[$val['gid']]['gid'] = $val['gid'];
$newret[$val['gid']]['num'] += $val['num'];
}
sort($newret);
//结果
Array
(
[0] => Array
(
[gid] => 2
[num] => 11
)
[1] => Array
(
[gid] => 3
[num] => 5
)
)