【问题标题】:Parsing JSON array with PHP foreach使用 PHP foreach 解析 JSON 数组
【发布时间】: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] 的数组;

标签: php foreach json


【解决方案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 是一个对象数组。数组中的每个元素都有一个namevalue 属性(以及其他属性)。

    尝试将第二个 foreach 放在第一个中。

    foreach($user->data as $mydata)
    {
        echo $mydata->name . "\n";
        foreach($mydata->values as $values)
        {
            echo $values->value . "\n";
        }
    }
    

    【讨论】:

    • 是的,谢谢@Rocket 这就是我需要的,乔纳斯首先回答了=p
    • @ToddN:该死,被打败了 76 秒 :-P
    猜你喜欢
    • 1970-01-01
    • 2013-04-15
    • 2018-05-14
    • 2017-06-17
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 2014-08-01
    相关资源
    最近更新 更多