我正在开发一个使用PHP / Mongodb聚合来自日期范围查询的json数据的Web应用程序。每个日期都会返回一个结构相似的json文档,我希望将其数据汇总在一起,以生成最终的'总数。 json doc。不幸的是,数据太大,无法简单地编码到网页中并在javascript中合并,这意味着我需要在php中对数据进行加法合并。对于这个问题,任何人都有一个干净的解决方案吗?
doc 1。
{
'field': {
a: 3,
b:
{
c: 1
}
},
'field2': 2
}
doc 2
{
'field': {
a: 5,
b:
{
c: 6
}
}
}
结果:
{
'field': {
a: 8,
b:
{
c: 7
}
},
'field2': 2
}
答案 0 :(得分:0)
最后,我根据我在这里找到的其他答案写了这个加法json合并函数。需要Mongo的两个结果,如果可能的话将它们加在一起。
function json_merge_additive( $arr1, $arr2 )
{
$keys = array_keys( $arr2 );
foreach( $keys as $key ) {
if( isset($arr1[$key]) && is_array($arr1[$key]) && is_array($arr2[$key])
)
{
$arr1[$key] = json_merge_additive( $arr1[$key], $arr2[$key] );
}
else if(isset( $arr1[$key]) && $arr2[$key] && is_numeric($arr1[$key]) && is_numeric($arr2[$key]) )
{
$arr1[$key] += $arr2[$key];
}
else // add key 2 to 1.
{
$arr1[$key] = $arr2[$key];
}
}
return $arr1;
}