PHP объединить 2 JSON в 1 - PullRequest
       56

PHP объединить 2 JSON в 1

1 голос
/ 27 сентября 2019

У меня 2 JSON файлы, которые я хотел бы разобрать, и объединить в один объект и вывода в качестве одного JSON.но я не могу понять, как это сделать и получить правильный результат, каждый раз, когда я всегда стараюсь получить один результат, как это:

[
    {
        "Title": "Some title for your blog",
        "url": "\/post.php?id=1",
        "image": "https:\/\/example.com\/images\/small\/1.jpg"
    }
]

, что мне нужно, это позвонить все JSon данные с 2 до 1JSON как это:

[
    {
        "Title": "second title for your blog",
        "url": "\/post.php?id=2",
        "image": "https:\/\/example.com\/images\/small\/2.jpg"
    }

    {
        "Title": "second title for your blog",
        "url": "\/post.php?id=2",
        "image": "https:\/\/example.com\/images\/small\/2.jpg"
    }
    {
        "Title": "third title for your blog",
        "url": "\/post.php?id=3",
        "image": "https:\/\/example.com\/images\/small\/3.jpg"
    }

    and so on... till the end of loop
]

Вот мой код:

$requestUrl="http://example.com/json1.php";
$requestUrl1="http://example.com/json2.php";

$data=file_get_contents($requestUrl);
$data1=file_get_contents($requestUrl1);

$array1 = json_decode($data);
$array2 = json_decode($data1);


$wholedata= [];
$i=0;
foreach ($array1 as $array1) {
    $item['Title'] = $array1->title;
    $item['url'] = $array1->url;
}   
foreach ($array2 as $array2) {
    $item['image'] = $array2->image;
}

$wholedata[] = $item;
            $i++;

$json = json_encode($wholedata, JSON_PRETTY_PRINT);

header('Access-Control-Allow-Origin: *');
header('Content-type: Application/JSON');

echo $json;

Вот данные JSON:

1011 * Json 1 1013

Json 2:

1016 *

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Чтобы сделать это с объектами (как вы сейчас используете), вы можете использовать индекс первого массива, чтобы получить данные из второго массива.Затем создайте вывод за один раз с компонентами обоих объектов и добавьте их в свой вывод ...

$array1 = json_decode($data);
$array2 = json_decode($data1);

$wholedata= [];
foreach ($array1 as $key => $itemData) {
    $wholedata[] = ['Title' => $itemData->title,
        'url' => $itemData->url,
        'image' => $array2[$key]->image];
}

$json = json_encode($wholedata, JSON_PRETTY_PRINT);
0 голосов
/ 27 сентября 2019

Попробуйте деокодировать JSON в массив, а затем объединить их.Ознакомьтесь с официальной документацией PHP

массив-слияние - объединяет два массива

json_decode - Преобразует JSON в массив

...