通过php合并JSON doc的添加剂

时间:2014-01-13 21:33:21

标签: javascript php json mongodb

我正在开发一个使用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
    }

1 个答案:

答案 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;
}