web-dev-qa-db-fra.com

Analyser le tableau JSON avec PHP foreach

Vous vous demandez pourquoi mon code PHP n'affichera pas toutes les "valeurs" des "valeurs" dans les données 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";
}

Le premier foreach fonctionne bien, mais le second renvoie une erreur.

{
   "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"
            }, ...
22
ToddN

Vous souhaitiez peut-être faire ce qui suit:

foreach($user->data as $mydata)

    {
         echo $mydata->name . "\n";
         foreach($mydata->values as $values)
         {
              echo $values->value . "\n";
         }
    }        
45
Jonas Schwabe

Vous devez lui indiquer quel index dans data utiliser, ou faire une double boucle dans tout.

Par exemple, pour obtenir les valeurs du 4ème index dans le tableau extérieur:

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

Pour passer par tout:

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

}   
7
Jonathan M

$user->data est un tableau d'objets. Chaque élément du tableau a une propriété name et value (ainsi que d'autres).

Essayez de mettre le 2e foreach à l'intérieur du 1er.

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