php 多个json数组,php - PHP-合并追加多个json数组 - 堆栈内存溢出

我需要合并/加入包含数组的多个json字符串(也需要合并),但是我不知道实现此目的的最佳方法是什么:

JSON字符串的初始数组(在下面的示例中称为$ rrDatas):

Array

(

[0] => {"asset":[1],"person":[1]}

[1] => {"asset":[2]}

)

预期结果 :

{"asset":[1,2],"person":[1]}

主要的困难是数组的数量是不确定的(我的示例是用2个数组制作的,但可以是3,4等)。 第二个困难是可以有多个属性(例如“资产”,“人”等,但是总是数组)。 这些可能的属性是已知的,但有许多属性,因此,如果算法是动态的,则更好。

我现在能做的是:

$mergedAssets['asset'] = [];

foreach ($rrDatas as $rrData)

{

$rrDataJson = \GuzzleHttp\json_decode($rrData, true);

$mergedAssets['asset'] = array_merge($mergedAssets['asset'],$rrDataJson['asset']);

}

$result = \GuzzleHttp\json_encode($mergedAssets, true);

结果:

{"asset":[1,2]}

这很好用,但不是动态的,我应该为每个可能的属性(例如“ person”等)复制此部分吗?

谢谢,纪尧姆

编辑:下面布雷特·格雷格森(Brett Gregson)和krylov123的回答帮助我建立了自己的解决方案,这是两种建议之间的混合:

$mergedJson = [];

foreach ($rrDatas as $rrData)

{

$rrDataJson = \GuzzleHttp\json_decode($rrData, true);

foreach(array_keys($rrDataJson) as $property)

{

$mergedJson[$property] = array_merge($mergedJson[$property] ?? [], $rrDataJson[$property]);

}

}

return \GuzzleHttp\json_encode($mergedJson, true);

在下面找到一个更好的例子:

$rrDatas = Array (

[0] => {"asset":[1,2],"person":[1],"passive":[1]}

[1] => {"asset":[3],"charge":[1],"passive":[2]}

)

这必须导致:

{"asset":[1,2,3],"person":[1],"passive":[1,2],"charge":[1]}

编辑2:我刚刚尝试了Progrock的解决方案,它似乎也很好地工作: https ://3v4l.org/7hSqi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值