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

我有下面的数组


    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 函数来查看我在忙于哪个并追加到新数组。但它没有达到我想要的效果,我总是以相同的数组结束。就像我真的陷入了一个循环。我看过很多例子,但我认为我的案例与例子不相似

紫衣仙女
浏览 110回答 1
1回答

至尊宝的传说

你需要超过 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                )        ))
打开App,查看更多内容
随时随地看视频慕课网APP