使用 PHP foreach 解析 JSON 数组
Posted
技术标签:
【中文标题】使用 PHP foreach 解析 JSON 数组【英文标题】:Parsing JSON array with PHP foreach 【发布时间】:2012-06-01 07:13:03 【问题描述】:想知道为什么我的 php 代码不会显示 JSON 数据中“值”的所有“值”:
$user = json_decode(file_get_contents($analytics));
foreach($user->data as $mydata)
echo $mydata->name . "\n";
foreach($user->data->values as $values)
echo $values->value . "\n";
第一个 foreach 工作正常,但第二个抛出错误。
"data": [
"id": "MY_ID/insights/page_views_login_unique/day",
"name": "page_views_login_unique",
"period": "day",
"values": [
"value": 1,
"end_time": "2012-05-01T07:00:00+0000"
,
"value": 6,
"end_time": "2012-05-02T07:00:00+0000"
,
"value": 5,
"end_time": "2012-05-03T07:00:00+0000"
, ...
【问题讨论】:
错误是什么?告诉我们输出是什么。$user->data
是一个数组吗?因为你用 foreach 来处理它。
错误是:警告:为 foreach() 提供的参数无效。 $user->data 似乎是 [0] 的数组;
【参考方案1】:
您可能想要执行以下操作:
foreach($user->data as $mydata)
echo $mydata->name . "\n";
foreach($mydata->values as $values)
echo $values->value . "\n";
【讨论】:
这就是我要找的!奇怪,我以为我试过了,谢谢。 非常感谢,这就是我要找的东西! 简单而优雅的解决方案:)【参考方案2】:您需要告诉它要使用data
中的哪个索引,或者对所有索引进行双重循环。
例如,获取外部数组中第 4 个索引中的值。:
foreach($user->data[3]->values as $values)
echo $values->value . "\n";
遍历所有:
foreach($user->data as $mydata)
foreach($mydata->values as $values)
echo $values->value . "\n";
【讨论】:
【参考方案3】:$user->data
是一个对象数组。数组中的每个元素都有一个name
和value
属性(以及其他属性)。
尝试将第二个 foreach
放在第一个中。
foreach($user->data as $mydata)
echo $mydata->name . "\n";
foreach($mydata->values as $values)
echo $values->value . "\n";
【讨论】:
是的,谢谢@Rocket 这就是我需要的,乔纳斯首先回答了=p @ToddN:该死,被打败了 76 秒 :-P以上是关于使用 PHP foreach 解析 JSON 数组的主要内容,如果未能解决你的问题,请参考以下文章