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

Posted

技术标签:

【中文标题】PHP递归函数对所有孩子的特定值求和【英文标题】:PHP recursive function to sum specifix value in all childs 【发布时间】: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
                                        ]
                                ]
                        ]
                ]
        ]
';

【问题讨论】:

【参考方案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。

以上是关于PHP递归函数对所有孩子的特定值求和的主要内容,如果未能解决你的问题,请参考以下文章

对数组元素求和

php与mysql表中如何求递归求和汇总?

怎么用递归实现1-10的求和 golang

递归求和

php 递归流程详细解析

python阶乘倒数求和!!!