2012-05-25 13 views
17

zastanawiać, dlaczego mój kodu PHP nie będą wyświetlane wszystkie „wartość” z „wartości” w danych JSON:analizowaniem JSON tablicę z PHP foreach

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

Pierwszy foreach działa dobrze, ale drugi zgłasza błąd.

{ 
    "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" 
      }, ... 
+0

Jaki jest błąd? Powiedz nam, jakie są wyniki. –

+0

Czy '$ user-> data' jest tablicą? Ponieważ przeszedłeś przez foreach. –

+0

Błąd: Ostrzeżenie: podano niepoprawny argument dla foreach(). $ user-> dane wydają się być tablicą [0]; – ToddN

Odpowiedz

36

Użytkownik może chciał wykonać następujące czynności:

foreach($user->data as $mydata) 

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

Tego właśnie szukałem! Dziwne, myślałem, że próbowałem tego, dziękuję. – ToddN

+0

Dziękuję bardzo, tego właśnie szukałem! –

6

Trzeba powiedzieć to wskaźnik, który w data użycie lub podwójną pętlę przez wszystkich.

Eg, aby uzyskać wartości w 4. indeksu w tablicy poza .:

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

przejść przez wszystko:

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

} 
4

$user->data to tablica obiektów. Każdy element w tablicy ma właściwość name i value (jak również inne).

Spróbuj umieścić 2. foreach w 1. miejscu.

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

Tak, dziękuję @Rocket to jest to, czego potrzebowałem, Jonas odpowiedział pierwszy = p – ToddN

+0

@ToddN: Darn, pobity przez 76 sekund :-P –