繁体   English   中英

PHP Json 文件合并

[英]PHP Json file merge

我需要将 json 文件合并到 1 个文件中。

我在 3 个文件中有这样的 json

{
    "count": 2077,
    "records": [
{
        "comm_date": "51529",
        "Certificate_Number": "31",
},
{
        "comm_date": "51529",
        "Certificate_Number": "31",
}
]} 

但问题是因为我有计数和记录数组在这里所以它没有成功合并

<?php

$a1 = file_get_contents ("EngroClaims.json");
$a2 = file_get_contents ("EngroClaims2.json");

$a6 = file_get_contents ("SCB1Claims.json");
$a7 = file_get_contents ("TotalParcoClaims.json");
$a8 = file_get_contents ("SAPTClaims.json");

 $r = array_merge(json_decode($a1,true), json_decode($a2,true), json_decode($a6,true), json_decode($a7,true), json_decode($a8,true));

file_put_contents('conventional.json', json_encode($r));

?>

这是我的 php 代码,运行良好。 但我需要合并所有records数组

例子

第一个文件

{
    "count": 2,
    "records": [
{
        "comm_date": "1",
},
{
        "comm_date": "2",
}
]} 

第二个文件

{
    "count": 3,
    "records": [
{
        "comm_date": "1",
},
{
        "comm_date": "2",
},
{
        "comm_date": "3",
}
]} 

预期结果

{
    "count": 9, //this count value is not imprtant assume it will show 1
    "records": [
{
        "comm_date": "1",
},
{
        "comm_date": "2",
},
{
        "comm_date": "1",
},
{
        "comm_date": "2",
},
{
        "comm_date": "3",
}
]} 

你可以这样使用;

<?php

$a1 = file_get_contents ("EngroClaims.json");
$a2 = file_get_contents ("EngroClaims2.json");


$a1 = json_decode($a1, true);
$a2 = json_decode($a2, true);
$count = $a1["count"] + $a2["count"];
$data = array();
$data["count"] = $count;
foreach ($a1["records"] as $row) {
    $data["records"][] = $row;
}
foreach ($a2["records"] as $row) {
    $data["records"][] = $row;
}
echo json_encode($data);

我发现了你的问题。 去掉json中的逗号(代码中有说明)。

$a1 = '{
    "count": 2077,
    "records": [
{
        "comm_date": "51529",
        "Certificate_Number": "31", <--- THIS IS A PROBLEM
},
{
        "comm_date": "51529",
        "Certificate_Number": "31", <--- THIS IS A PROBLEM
}
]}';

/* in order for this solution to work you need to delete that comma. 
    Because there isn't a following data in the json so the comma should not be there */

检查此链接; http://sandbox.onlinephpfunctions.com/code/8dfab10352cf4966c95eb599d2ed8644b24b49ab

如果不需要计数,可以使用 array_merge_recursive

$r = array_merge_recursive(json_decode($a1,true), json_decode($a2,true),json_decode($a3,true));
echo json_encode($r);

会给你结果

{"count":[3,3,3],"records":[{"comm_date":"1"},{"comm_date":"2"},{"comm_date":"3"},{"comm_date":"1"},{"comm_date":"2"},{"comm_date":"3"},{"comm_date":"1"},{"comm_date":"2"},{"comm_date":"3"}]}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM