首页 > 解决方案 > PHP - JSON 到数组,迭代并打印到字符串

问题描述

我在 HTTP 请求中收到以下 JSON 对象:

{
"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();
    }

我在正确的轨道上吗?谁能帮我生成正确的输出格式?

标签: phparraysjsonlaravel

解决方案


用于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";
}
?>

推荐阅读