请教下PHP数组求和的方法

首先上数组

Array
(
    [0] => Array
        (
            [tid] => 12
            [aid] => 1
            [openid] => oWWUP0dieOLSHl3CzjyHIcIsadhtVo
            [nickname] => 帅锅你好帅
            [sales] => 
            [team_name] => 帅
            [team_slogan] => 酷
            [title] => 测试活动
            [new] => Array
                (
                    [0] => Array
                        (
                            [id] => 1
                            [openid] => oWWUP0dieOLSHl3CzjyHIcIsadhtVo
                            [nickname] => 帅锅你好帅
                            [tid] => 12
                            [cre_time] => 1512704950
                            [aid] => 0
                            [sales] => 12
                        )

                    [1] => Array
                        (
                            [id] => 3
                            [openid] => oWWUP0UXRfKKA6imX_X-6OU7OKv0
                            [nickname] => landy
                            [tid] => 12
                            [cre_time] => 1512704975
                            [aid] => 0
                            [sales] => 54
                        )

                )

        )

    [1] => Array
        (
            [tid] => 13
            [aid] => 2
            [openid] => oWWUP0dieOLSHl3CzjyHIcIsadhtVo
            [nickname] => 帅锅你好帅
            [sales] => 
            [team_name] => 帅
            [team_slogan] => 酷
            [title] => 测按时
            [new] => Array
                (
                    [0] => Array
                        (
                            [id] => 2
                            [openid] => oWWUP0dieOLSHl3CzjyHIcIsadhtVo
                            [nickname] => 帅锅你好帅
                            [tid] => 13
                            [cre_time] => 1512704970
                            [aid] => 2
                            [sales] => 24
                        )

                )

        )

)
我想计算    

[0][new][sales]的总和
[1][new][sales]的总和

我不知道数组到底会有多大的....所以.....

我就知道我需要..new 下    tid 相同的话,sales 求和


求大家帮帮忙吧!~~我菜鸟...

?!

阅读 2.7k
3 个回答
$tmp = [];
foreach ($arr as $value) {
    foreach ($value['new'] as $val) {
        if (isset($tmp[$val['tid']]) && !empty($tmp[$val['tid']])) {
            $tmp[$val['tid']] += $val['sales'];
        } else {
            $tmp[$val['tid']] = $val['sales'];
        }
    }
}

一般的写法是这样,计算tid相同的sales的和:以tid的值为键,以tid相同的sales的总和为值

求和还是 直接查询时候 通过数据库求和吧

foreach ($data as $key => $value) {
  $data[$key]['sum'] = array_sum(array_column($value['new'], 'sales'));
}

不知道是不是你要的结果,其实这种直接通过数据库查询更好计算吧

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