代码之家  ›  专栏  ›  技术社区  ›  oliverbj

PHP-JSON到数组,迭代并打印到字符串

  •  -5
  • oliverbj  · 技术社区  · 6 年前

    {
    "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 回复  |  直到 6 年前
        1
  •  4
  •   Ricky Mo    6 年前

    使用 json_decode() 先解码JSON。然后通过它的 statisticalvalues 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";
    }
    ?>