数组重组求助~~

下面这堆数组wid和gid相同的,要求Num累加,不同的不操作直接显示,数组去重如何实现?

$arr = array(
                array(
                        'wid' => 1,
                        'gid' => 3,
                        'num' => 4,
                    ),
                array(
                        'wid' => 2,
                        'gid' => 1,
                        'num' => 4,
                    ),
                array(
                        'wid' => 1,
                        'gid' => 3,
                        'num' => 3,
                    ),
                array(
                        'wid' => 2,
                        'gid' => 1,
                        'num' => 4,
                    ),
                 array(
                        'wid' => 1,
                        'gid' => 1,
                        'num' => 4,
                    ),
         );

下面是我想要的效果

$arr = array(
                array(
                        'wid' => 1,
                        'gid' => 3,
                        'num' => 7,
                    ),
                array(
                        'wid' => 2,
                        'gid' => 1,
                        'num' => 8,
                    ),
                 array(
                        'wid' => 1,
                        'gid' => 1,
                        'num' => 4,
                    ),
         );
阅读 1.6k
2 个回答

没明白你想要什么效果

新手上路,请多包涵

随便写了个,有更好的可以补充

$temp = $data = [];
foreach($arr as $v){
    if(isset($temp[$v['wid']][$v['gid']])){
        $temp[$v['wid']][$v['gid']] += $v['num'];
    }else{
        $temp[$v['wid']][$v['gid']] = $v['num'];
    }
}
foreach($temp as $k=>$v){
    foreach($v as $key=>$val){
        $data[] = [
            'wid' => $k,
            'gid' => $key,
            'num' => $val
        ];
    }
}
var_dump($data);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题