我试图在关联数组中用 2 个键条件对值求和,但没有得到任何结果,只是不像预期的那样。我的阵列:Array([0] => Array ( [pid] => P1 [rid] => 1 [price] => 100 )[1] => Array ( [pid] => P1 [rid] => 1 [price] => 120 )[2] => Array ( [pid] => P1 [rid] => 1 [price] => 130 )[3] => Array ( [pid] => P2 [rid] => 1 [price] => 80 )[4] => Array ( [pid] => P2 [rid] => 1 [price] => 120 )[5] => Array ( [pid] => P2 [rid] => 2 [price] => 150 ));我已经尝试了How to GROUP BY 和 SUM PHP Array 中的一些代码 ?或在 PHP 中对数组进行分组然后代码变成:$groups = array();foreach ($array as $item) { $key = $item['pid']; if (!array_key_exists($key,$groups)) { $groups[$key] = array( 'pid' => $item['pid'], 'rid'=>$item['rid'], 'price' => $item['price'] ); } else { $groups[$key]['price'] += $item['price']; }}我期望输出数组:Array([0] => Array ( [pid] => P1 [rid] => 1 [price] => 350 ) [1] => Array ( [pid] => P2 [rid] => 1 [price] => 200 )[2] => Array ( [pid] => P2 [rid] => 2 [price] => 150 ));我不知道如何用 array_reduce 和 foreach 来解决这个问题,请用其他参考打我或帮我解决这个问题。
1 回答
倚天杖
TA贡献1828条经验 获得超3个赞
如果$data是您的输入数组,则可以使用以下代码
$r = array();
foreach ( $data as $d ) {
$key = $d['pid'] . '-' . $d['rid'];
if( !isset ( $r[$key] ) ) {
$r[$key] = $d;
} else {
$r[$key]['price'] += $d['price'];
}
}
echo '<pre>';
print_r($r);
die;
- 1 回答
- 0 关注
- 127 浏览
添加回答
举报
0/150
提交
取消