为了账号安全,请及时绑定邮箱和手机立即绑定

如何将数组关联与 2 个键值相加

如何将数组关联与 2 个键值相加

PHP
牛魔王的故事 2021-11-19 17:09:19
我试图在关联数组中用 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;


查看完整回答
反对 回复 2021-11-19
  • 1 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信