多维数组中深层列值的总和

发布于 2024-11-27 09:57:42 字数 1433 浏览 4 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深海少女心 2024-12-04 09:57:42

在这里,尝试这个 - 我确信它既不是完美也不是最佳解决方案( 3 foreach-es ),但它适用于相当大的数据集...

$inputArray 是包含您提供的数据的多维数组,顺便说一句..编辑

:固定版本:

$result = array();

foreach( $inputArray as $subArray ) {

    foreach ( $subArray as $subKey => $member ) {

        if ( empty( $result[$subKey]) ) {

            $result[$subKey] = $member;

        } else {
            foreach ( $member as $id => $subMember ) {

                if ( empty( $result[$subKey][$id]) ) {

                    $result[$subKey][$id] = $subMember;

                } else {

                    $result[$subKey][$id] += $subMember;

                }
            }
        }
    }
}

编辑2:由于您更改了数组的格式,因此解决方案有所不同:

注意: $array1 和 $array2 是您的“全局”-预定义数组。

$arrayWrapper = array_merge( ( array ) $array1, ( array ) $array2 );

$result = array();

foreach ( $arrayWrapper as $inputArray ) {

    foreach( $inputArray as $subArray ) {

        foreach ( $subArray as $subKey => $member ) {

            if ( empty( $result[$subKey]) ) {

                $result[$subKey] = $member;

            } else {
                foreach ( $member as $id => $subMember ) {

                    if ( empty( $result[$subKey][$id]) ) {

                        $result[$subKey][$id] = $subMember;

                    } else {

                        $result[$subKey][$id] += $subMember;

                    }
                }
            }
        }
    }
}

用你的数据测试了一下,应该可以。

干杯。

Here, try this - I'm sure it's neither a perfect nor optimal solution ( 3 foreach-es ), but it works on a reasonably large data set...

$inputArray is the multidimensional array with the data you provided, btw...

EDIT: Fixed version:

$result = array();

foreach( $inputArray as $subArray ) {

    foreach ( $subArray as $subKey => $member ) {

        if ( empty( $result[$subKey]) ) {

            $result[$subKey] = $member;

        } else {
            foreach ( $member as $id => $subMember ) {

                if ( empty( $result[$subKey][$id]) ) {

                    $result[$subKey][$id] = $subMember;

                } else {

                    $result[$subKey][$id] += $subMember;

                }
            }
        }
    }
}

EDIT2: Since you changed the format of arrays, the solution is different:

Note: $array1 and $array2 are your "global" - predefined arrays.

$arrayWrapper = array_merge( ( array ) $array1, ( array ) $array2 );

$result = array();

foreach ( $arrayWrapper as $inputArray ) {

    foreach( $inputArray as $subArray ) {

        foreach ( $subArray as $subKey => $member ) {

            if ( empty( $result[$subKey]) ) {

                $result[$subKey] = $member;

            } else {
                foreach ( $member as $id => $subMember ) {

                    if ( empty( $result[$subKey][$id]) ) {

                        $result[$subKey][$id] = $subMember;

                    } else {

                        $result[$subKey][$id] += $subMember;

                    }
                }
            }
        }
    }
}

Tested it with your data, should work.

Cheers.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文