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递归函数对所有孩子的特定值求和的主要内容,如果未能解决你的问题,请参考以下文章