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->json();
- 但这给了我这个错误:json_decode() expects parameter 1 to be string, object given
我认为您的$request->json();
已经是您提到的对象或数组。您可以跳过解码部分。如果是数组,将->statisticalvalues
替换为['statisticalvalues']
,将->key_0
替换为['key_0']
。以上是关于PHP - JSON 到数组,迭代并打印到字符串的主要内容,如果未能解决你的问题,请参考以下文章