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

如何对多维数组中的数组求和并将总数组加回数组

如何对多维数组中的数组求和并将总数组加回数组

PHP
紫衣仙女 2023-03-04 17:49:56
我有下面的数组    Array    (        [0] => Array            (                [group_description] => Group 1                [services] => Array                    (                        [0] => Array                            (                                [service_id] => 1                                [service_name] => Security                                [service_total] => 10                            )                        [1] => Array                            (                                [service_id] => 4                               [service_name] => Catering                                [service_total] => 20                            )                    )            )        [1] => Array            (                [group_description] => Group 2                [services] => Array                    (                        [0] => Array                            (                                [service_id] => 1                                [service_name] => Security                                [service_total] => 6                            )                        [1] => Array                            (                                [service_id] => 4                                [service_name] => Catering                                [service_total] => 15                            )                        [2] => Array                            (                                [service_id] => 5                                [service_name] => Lighting                                [service_total] => 8                            )                    )            )    )我想对具有相同服务的数组求和并创建一个总数组并像这样放回数组                   我试过循环数组并在循环时创建一个新数组。我使用了一个 foreach 循环,然后使用 array_search 函数来查看我在忙于哪个并追加到新数组。但它没有达到我想要的效果,我总是以相同的数组结束。就像我真的陷入了一个循环。我看过很多例子,但我认为我的案例与例子不相似
查看完整描述

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

你需要超过 1 个 foreach。每次最深的迭代检查是否添加了服务。如果是,则添加当前值,如果不是,则添加整个服务。最后加入当前数组。


function count_services($array)

{

    $service_list = [];

    foreach ($array as $row) {

        foreach ($row['services'] as $service) {

            if (isset($service_list[$service['service_id']])) {

                $service_list[$service['service_id']]['service_total'] += $service['service_total'];

            } else {

                $service_list[$service['service_id']] = $service;

            }

        }

    }


    return [

        'group_description' => 'Total',

        'services' => array_values($service_list)];

}


print_r(count_services($array));

输出:


Array

(

    [group_description] => Total

    [services] => Array

        (

            [0] => Array

                (

                    [service_id] => 1

                    [service_name] => Security

                    [service_total] => 16

                )


            [1] => Array

                (

                    [service_id] => 4

                    [service_name] => Catering

                    [service_total] => 35

                )


            [2] => Array

                (

                    [service_id] => 5

                    [service_name] => Lighting

                    [service_total] => 8

                )


        )


)


查看完整回答
反对 回复 2023-03-04
  • 1 回答
  • 0 关注
  • 90 浏览

添加回答

举报

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