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

Posted

技术标签:

【中文标题】PHP - JSON 到数组,迭代并打印到字符串【英文标题】:PHP - JSON to Array, iterate and print to string 【发布时间】: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 数据转换为预期的文本? 【参考方案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']

以上是关于PHP - JSON 到数组,迭代并打印到字符串的主要内容,如果未能解决你的问题,请参考以下文章

Android/Java 中的 JSON 数组迭代

Android/Java 中的 JSON 数组迭代

如何从嵌套 Json 数组角度 2 打印和分离键和值并将其添加到选择框中

如何在 PHP 中获取 JSON 数组并打印其值?

PHP“漂亮打印”json_encode [重复]

将链接从 selenium 迭代到 bs4 并打印剥离的字符串