Как изменить структуру данных для использования с линейным графиком Google - PullRequest
1 голос
/ 24 апреля 2019

У меня есть фид json api, который я хочу реструктурировать для использования в линейном графике Google, но я не знаю, как перебрать данные json для создания нового массива в php. Чтобы усложнить задачу, данные, которые я хочу построить для каждого элемента, находятся в разных строках.

Это данные JSON

{
    "records": [
        {
            "id": "2",
            "groupno": "1",
            "urlsource": "https://www.amazon.co.uk/Boot-Buddy-fastest-simplest-footwear/dp/B014UPAHO4?pd_rd_wg=lVVK6&pd_rd_r=bf1ba871-fb59-4c66-a146-e94dde7c8e6d&pd_rd_w=gWC2F&ref_=pd_gw_ri&pf_rd_r=W68MX1TXFDDJ8Q8Z08CP&pf_rd_p=cecd4520-32f6-5499-ae19-cd4e83816acd",
            "name": "Boot buddy",
            "date": "2019-04-14 16:00:29.595",
            "price": "£14.99"
        },
        {
            "id": "1",
            "groupno": "1",
            "urlsource": "https://www.amazon.co.uk/dp/B07CH6JKW3/ref=gw_uk_desk_h1_aucc_cp_mp?pf_rd_p=e4e5a2e6-ddbd-473a-a5fb-e8cc09a11f88&pf_rd_r=1MN25BRXY8YDQ4TBK4X6",
            "name": "Amazon echo",
            "date": "2019-04-14 16:00:29.595",
            "price": "£19.99"
        },
        {
            "id": "2",
            "groupno": "1",
            "urlsource": "https://www.amazon.co.uk/Boot-Buddy-fastest-simplest-footwear/dp/B014UPAHO4?pd_rd_wg=lVVK6&pd_rd_r=bf1ba871-fb59-4c66-a146-e94dde7c8e6d&pd_rd_w=gWC2F&ref_=pd_gw_ri&pf_rd_r=W68MX1TXFDDJ8Q8Z08CP&pf_rd_p=cecd4520-32f6-5499-ae19-cd4e83816acd",
            "name": "Boot buddy",
            "date": "2019-04-14 21:50:31.362",
            "price": "£14.99"
        },
        {
            "id": "1",
            "groupno": "1",
            "urlsource": "https://www.amazon.co.uk/dp/B07CH6JKW3/ref=gw_uk_desk_h1_aucc_cp_mp?pf_rd_p=e4e5a2e6-ddbd-473a-a5fb-e8cc09a11f88&pf_rd_r=1MN25BRXY8YDQ4TBK4X6",
            "name": "Amazon echo",
            "date": "2019-04-14 21:50:31.362",
            "price": "£19.99"
        },
        {
            "id": "2",
            "groupno": "1",
            "urlsource": "https://www.amazon.co.uk/Boot-Buddy-fastest-simplest-footwear/dp/B014UPAHO4?pd_rd_wg=lVVK6&pd_rd_r=bf1ba871-fb59-4c66-a146-e94dde7c8e6d&pd_rd_w=gWC2F&ref_=pd_gw_ri&pf_rd_r=W68MX1TXFDDJ8Q8Z08CP&pf_rd_p=cecd4520-32f6-5499-ae19-cd4e83816acd",
            "name": "Boot buddy",
            "date": "2019-04-14 21:54:11.184",
            "price": "£12.99"
        },
        {
            "id": "1",
            "groupno": "1",
            "urlsource": "https://www.amazon.co.uk/dp/B07CH6JKW3/ref=gw_uk_desk_h1_aucc_cp_mp?pf_rd_p=e4e5a2e6-ddbd-473a-a5fb-e8cc09a11f88&pf_rd_r=1MN25BRXY8YDQ4TBK4X6",
            "name": "Amazon echo",
            "date": "2019-04-14 21:54:11.184",
            "price": "£17.99"
        }
    ]
}

Это структура, которую я хочу достичь для линейного графика ...

[
    ['Date time',                   'Boot buddy price',     'Amazon echo price'],
    ['2019-04-14 16:00:29.595',     £14.99,                 £19.99],
    ['2019-04-14 21:50:31.362',     £14.99,                 £19.99],
    ['2019-04-14 21:54:11.184',     £12.99,                 £17.99],
]

Я буквально не знаю, с чего начать. Другие вопросы / решения, которые я нашел, не имеют такой же исходный формат данных. Любая помощь приветствуется!

1 Ответ

0 голосов
/ 24 апреля 2019

Вы можете дважды выполнить цикл на вашем json - сначала получите нужные данные в массиве и отформатируйте их.

Сначала выполните цикл на json следующим образом:

$arr = jsone_decode($jsonStr, true);
foreach($arr as $e) {
    $data[$e["date"]][$e["name"]] = $e["price"];
}

Теперь выполните цикл снована $data чтобы отформатировать вывод:

$res[] = ['Date time', 'Boot buddy price', 'Amazon echo price']; // set the header
foreach($data as $k => $e) {
    $res[] = [$k, $e["Boot buddy"], $e["Amazon echo"]];
}

И $res будет содержать формат вашего желания

...