关于Php数组的问题

Array
(
    [0] => Array
        (
            [oid] => 190
            [color] => 
            [goods_name] => 测试要
            [goods_num] => 1
            [goods_price] => 0.01
            [id] => 44
            [img] => /Public/Uploads/2017-12-13/5a30fa5763bdb.jpg
            [user_openid] => oWWUP0dieOLSHl3CzjyHIcIdhtVo
            [order_number] => 20181513226463
            [tid] => 92
            [status] => 1
            [tuiid] => 
            [aid] => 
            [gid] => 
            [corm_time] => 1514862004
        )

    [1] => Array
        (
            [oid] => 191
            [color] => 
            [goods_name] => A5笔记本子
            [goods_num] => 2
            [goods_price] => 0.01
            [id] => 43
            [img] => /Public/Uploads/2017-12-06/5a27add5325d1.jpg
            [user_openid] => oWWUP0dieOLSHl3CzjyHIcIdhtVo
            [order_number] => 20181513241259
            [tid] => 93
            [status] => 1
            [tuiid] => 
            [aid] => 
            [gid] => 
            [corm_time] => 1514862004
        )

    [2] => Array
        (
            [oid] => 193
            [color] => 
            [goods_name] => 测试要
            [goods_num] => 1
            [goods_price] => 0.01
            [id] => 46
            [img] => /Public/Uploads/2017-12-13/5a30fa5763bdb.jpg
            [user_openid] => oWWUP0dieOLSHl3CzjyHIcIdhtVo
            [order_number] => 20181513241259
            [tid] => 93
            [status] => 1
            [tuiid] => 
            [aid] => 
            [gid] => 
            [corm_time] => 1514862004
        )

)

如上数组是 $a ;

我需求出上面数组的 goods_num 之和 最终组合成下面这个样的数组,请大神们帮个忙吧!

Array
(
    [0] => Array
        (
            [name] => 测试要
            [number] => 2
        )

    [1] => Array
        (
            [name] => A5笔记本子
            [number] => 2
        )

)

完全没有头绪,也不知道怎么搞。。。。反正就是各种懵逼了!!!~

我通过直接在数据库计算,出现这样的结果

Array
(
    [0] => Array
        (
            [name] => 测试要
            [number] => 2
        )

    [1] => Array
        (
            [name] => A5笔记本子
            [number] => 2
        )

    [2] => Array
        (
            [name] => 测试要
            [number] => 2
        )
)

但是去重又是个问题了。我实在不知道咋搞了。。还是得求大神啊!!!

阅读 2.6k
4 个回答

假设你的商品表为goods

select goods_name as name,sum(goods_num) as number from goods  group by name;
$arr = [
        ['goods_name' => 'a', 'goods_num' => 1], 
        ['goods_name' => 'b', 'goods_num' => 1], 
        ['goods_name' => 'c', 'goods_num' => 1], 
        ['goods_name' => 'a', 'goods_num' => 2], 
        ['goods_name' => 'a', 'goods_num' => 3], 
        ['goods_name' => 'a', 'goods_num' => 5], 
        ['goods_name' => 'a', 'goods_num' => 8], 
        ['goods_name' => 'b', 'goods_num' => 8], 
        ['goods_name' => 'd', 'goods_num' => 9], 
       ];

$arr = array_reduce($arr, function($group, $item) {
    $group[$item['goods_name']][] = $item['goods_num'];
    return $group;
}, []);

$arr = array_map(function ($i) {
    return array_sum($i);
}, $arr);

print_r($arr);
新手上路,请多包涵

mysql考虑一下group by;
如果只考虑你当前数组的话,可以循环当前数组,判断goods_name

新手上路,请多包涵

楼上 回答的可以

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题