【问题标题】:PHP recursive function to sum specifix value in all childsPHP递归函数对所有孩子的特定值求和
【发布时间】:2021-11-22 21:22:54
【问题描述】:

PHP 递归函数对所有子项中的特定值求和

我遇到了将数组中的所有子值求和的问题,我刚刚创建了一个简单的函数来解决我的问题。我分享这个是为了提高知识。

$json = '{
    "name": "ABC",
    "subArr": [{
            "name": "def",
            "count": 10,
            "subArr": [{
                    "name": "ghi",
                    "count": 5
                }, {
                    "name": "jkl",
                    "count": 15,
                    "subArr": [{
                            "name": "mno",
                            "count": 5
                        }]
                }]
        }, {
            "name": "pqr",
            "count": 10,
            "subArr": [{
                    "name": "stu",
                    "count": 5
                }, {
                    "name": "vwx",
                    "count": 15,
                    "subArr": [{
                            "name": "yz",
                            "count": 5,
                            "subArr": [{
                                    "name": "yz",
                                    "count": 5,
                                    "subArr": [{
                                            "name": "yz",
                                            "count": 5
                                        }]
                                }]
                        }]
                }]
        }]
}';

【问题讨论】:

    标签: php recursion sum


    【解决方案1】:
    $json = '{
        "name": "ABC",
        "subArr": [{
                "name": "def",
                "count": 10,
                "subArr": [{
                        "name": "ghi",
                        "count": 5
                    }, {
                        "name": "jkl",
                        "count": 15,
                        "subArr": [{
                                "name": "mno",
                                "count": 5
                            }]
                    }]
            }, {
                "name": "pqr",
                "count": 10,
                "subArr": [{
                        "name": "stu",
                        "count": 5
                    }, {
                        "name": "vwx",
                        "count": 15,
                        "subArr": [{
                                "name": "yz",
                                "count": 5,
                                "subArr": [{
                                        "name": "yz",
                                        "count": 5,
                                        "subArr": [{
                                                "name": "yz",
                                                "count": 5
                                            }]
                                    }]
                            }]
                    }]
            }]
    }';
    
    
    function countTotal($array, &$total) {
        foreach ($array["subArr"] as $row) {
            $total = $total + $row['count'];
            if (!empty($row["subArr"])) {
                countTotal($row, $total);
            }
        }
        return $total;
    }
    
    $total = 0;
    
    $finalCount = countTotal(json_decode($json, true), $total);
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 2017-07-01
    相关资源
    最近更新 更多