使用其值和嵌套数组元素值合计向上数组元素



我不知道该怎么做。

考虑我有以下php数组

Array
(
    [0] => Array
        (
            [cat_id] => 2
            [parent_id] => 1
            [Title] => Default Category
            [Product Count] => 0
            [children] => Array
                (
                    [0] => Array
                        (
                            [cat_id] => 4
                            [parent_id] => 2
                            [Title] => computers & electronics
                            [Product Count] => 5
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [cat_id] => 5
                                            [parent_id] => 4
                                            [Title] => projectors
                                            [Product Count] => 2
                                            [children] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [cat_id] => 6
                                                            [parent_id] => 5
                                                            [Title] => film projectors
                                                            [Product Count] => 1
                                                        )
                                    [1] => Array
                                        (
                                            [cat_id] => 7
                                            [parent_id] => 4
                                            [Title] => projector cases
                                            [Product Count] => 0
                                            children] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [cat_id] => 8
                                                            [parent_id] => 7
                                                            [Title] => leather cases
                                                            [Product Count] => 10

我想以某种方式迭代每个数组元素,并根据其on值和所有子值(可能有n级深度)来合计ProductCount元素

我正在寻找的最终结果是

Array
(
    [0] => Array
        (
            [cat_id] => 2
            [parent_id] => 1
            [Title] => Default Category
            [Product Count] => 18
            [children] => Array
                (
                    [0] => Array
                        (
                            [cat_id] => 4
                            [parent_id] => 2
                            [Title] => computers & electronics
                            [Product Count] => 18
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [cat_id] => 5
                                            [parent_id] => 4
                                            [Title] => projectors
                                            [Product Count] => 3
                                            [children] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [cat_id] => 6
                                                            [parent_id] => 5
                                                            [Title] => film projectors
                                                            [Product Count] => 1
                                                        )
                                    [1] => Array
                                        (
                                            [cat_id] => 7
                                            [parent_id] => 4
                                            [Title] => projector cases
                                            [Product Count] => 10
                                            children] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [cat_id] => 8
                                                            [parent_id] => 7
                                                            [Title] => leather cases
                                                            [Product Count] => 10

有人能帮忙吗?速度或效率并不是一个大问题,因为它将每天凌晨3点运行一次,所以没有人会等待它完成工作!!

在未知深度的数组中统计值的唯一合理方法是使用递归方法。

function sumItems(&$branch,$sum){
    $sum = $branch['Product Count'];
    foreach($branch['children'] as &$item){
          $sum += sumItems($item,$sum); // Each sub array runs this function
                                        // And adds thier count to the parent branch
    }
    $branch['Product Count'] = $sum; // Since branch is passed to function as
                                    // Reference, this line overrides the original value
    return $sum; // Each recursion of this function returns its own value + the sum of all sub arrays to the parent
}
sum_items($array,0); // Will return the sum of all branches and sub branches

相关内容

  • 没有找到相关文章

最新更新