Laravel如何从嵌套JSON提取特定数值并计算总和
提取PHP序列化字符串中的数值并计算总和
问题场景
你有一个嵌套JSON结构,其中包含PHP序列化字符串,已经通过unserialize将其转换为结构化数组,现在需要提取所有数值并计算总和。
原始嵌套JSON(含序列化字符串):
[ [ [ "a:1:{s:3:\"ALL\";d:100;}", "a:1:{s:3:\"ALL\";d:200;}", "a:1:{s:3:\"ALL\";d:89;}" ], [ "a:1:{s:3:\"USD\";d:100;}" ], [ "a:2:{s:3:\"ALL\";d:300;s:3:\"USD\";d:250;}" ], [ "a:1:{s:3:\"ALL\";d:30;}", "a:2:{s:3:\"ALL\";d:100;s:3:\"USD\";d:200;}" ], [ "a:1:{s:3:\"USD\";d:200;}" ] ] ]
反序列化后的结构化数组:
[ [ [ ["ALL" => 100], ["ALL" => 200], ["ALL" => 89] ], [ ["USD" => 100] ], [ ["ALL" => 300, "USD" => 250] ], [ ["ALL" => 30], ["ALL" => 100, "USD" => 200] ], [ ["USD" => 200] ] ] ]
实现方法
通过多层循环遍历嵌套数组,提取每个子数组中的所有数值并累加计算总和,以下是PHP代码示例:
// 假设$structuredArray是反序列化后的结构化数组 $structuredArray = [ [ [ ["ALL" => 100], ["ALL" => 200], ["ALL" => 89] ], [ ["USD" => 100] ], [ ["ALL" => 300, "USD" => 250] ], [ ["ALL" => 30], ["ALL" => 100, "USD" => 200] ], [ ["USD" => 200] ] ] ]; $total = 0; // 遍历最外层数组 foreach ($structuredArray as $level1) { // 遍历二级嵌套数组 foreach ($level1 as $level2) { // 遍历每个包含键值对的子数组 foreach ($level2 as $item) { // 提取当前子数组的所有数值并累加 foreach ($item as $value) { $total += $value; } } } } echo "总和:" . $total; // 输出结果:总和:1569
代码说明
- 多层循环对应数组的嵌套层级,确保遍历到每一个包含数值的子元素
- 每一层
foreach都针对对应层级的数组结构,最后提取键值对中的数值完成累加 - 如果后续数组嵌套层级发生变化,只需调整循环层数即可适配
内容的提问来源于stack exchange,提问作者laraCoder
相关产品推荐
相关产品推荐

