【问题标题】:PHP - JSON to Array, iterate and print to stringPHP - JSON 到数组,迭代并打印到字符串
【发布时间】:2019-03-13 22:13:37
【问题描述】:

我在 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();
    }

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

【问题讨论】:

  • 我建议使用 php json decode php.net/manual/en/function.json-decode.php
  • ☝️ 伙计们,听起来像解码 JSON 是个问题吗?!
  • 问题不是将 JSON 对象转换为数组,而是得到正确的输出。
  • @oliverbj PHP 是硬性要求吗?您是否愿意通过一行jq command line filter 将您的 JSON 数据转换为预期的文本?

标签: php arrays json laravel


【解决方案1】:

首先使用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";
}
?>

【讨论】:

  • 嗨瑞奇!我无法动态使用它。我有这个作为我的 $json:$json = $request-&gt;json(); - 但这给了我这个错误:json_decode() expects parameter 1 to be string, object given
  • 我认为您的$request-&gt;json(); 已经是您提到的对象或数组。您可以跳过解码部分。如果是数组,将-&gt;statisticalvalues替换为['statisticalvalues'],将-&gt;key_0替换为['key_0']
猜你喜欢
  • 1970-01-01
  • 2013-09-15
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-29
相关资源
最近更新 更多