Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parsing JSON array with PHP foreach

Tags:

json

foreach

php

Wondering why my PHP code will not display all "Value" of "Values" in the JSON data:

$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";
}

The first foreach works fine, but the second throws an error.

{
   "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"
            }, ...
like image 663
ToddN Avatar asked May 25 '12 17:05

ToddN


2 Answers

You maybe wanted to do the following:

foreach($user->data as $mydata)      {          echo $mydata->name . "\n";          foreach($mydata->values as $values)          {               echo $values->value . "\n";          }     }         
like image 130
Jonas Osburg Avatar answered Sep 26 '22 01:09

Jonas Osburg


You need to tell it which index in data to use, or double loop through all.

E.g., to get the values in the 4th index in the outside array.:

foreach($user->data[3]->values as $values)
{
     echo $values->value . "\n";
}

To go through all:

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

}   
like image 31
Jonathan M Avatar answered Sep 23 '22 01:09

Jonathan M