PHP - JSON для Array, итерации и печати в строку - PullRequest
0 голосов
/ 09 октября 2018

Я получаю ниже объект JSON в HTTP-запросе:

{
"name": "myjsonstring",
"statisticalvalues": [
  {
    "key_0":"677876"
  },
  {
    "key_0":"0"
  },
],
"commoditycodes": [
  {
    "key_0":"90001000"
  },
  {
    "key_0":"80001000"
  },
]
}

Я хочу получить указанные выше значения, например statisticalvalues & commoditycodes, например:

JSON Information:
677876      90001000
0           80001000

Моя первоначальная мысль быладобавьте это в массив:

    $returnArray = [];

    //Input
    foreach ($request->input() as $key => $value) {
        if ($key === 'commoditycodes') {
            $returnArray['commoditycodes'][] = $value;
        }
        if ($key === 'statisticalvalues') {
            $returnArray['statisticalvalues'][] = $value;
        }
    }

Затем я хочу вывести его, как указано выше, но я не уверен, как его повторить, например: statisticalvalues | commoditycodes

    //Output:
    foreach ($returnArray as $value) {
        print_r($value);
        die();
    }

Я включенправильный путь?Кто-нибудь может мне помочь с генерацией правильного формата вывода?

1 Ответ

0 голосов
/ 09 октября 2018

используйте json_decode(), чтобы сначала декодировать JSON.Затем выполните цикл по statisticalvalues, найдите соответствующий commoditycodes с тем же индексом массива в массиве commoditycodes.Имейте в виду, что фактические значения находятся под свойством с именем key_0.

<?php
$json = '{"name":"myjsonstring","statisticalvalues":[{"key_0":"677876"},{"key_0":"0"}],"commoditycodes":[{"key_0":"90001000"},{"key_0":"80001000"}]}';
$obj = json_decode($json,false);
foreach ($obj->statisticalvalues as $key => $value) {
    echo $value->key_0 . "\t\t" . $obj->commoditycodes[$key]->key_0 . "\n";
}
?>

В вашем случае это может быть:

<?php
$obj = $request->input();
foreach ($obj["statisticalvalues"] as $key => $value) {
    echo $value["key_0"] . "\t\t" . $obj["commoditycodes"][$key]["key_0"] . "\n";
}
?>
...