2012-05-25 135 views
17

奇怪,爲什麼我的PHP代碼不會在JSON數據顯示「值」的所有「值」:解析JSON陣列與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"; 
} 

第一的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" 
      }, ... 
+0

什麼是錯誤?告訴我們輸出的是什麼。 –

+0

'$ user-> data'是一個數組嗎?因爲你用foreach去倒槽。 –

+0

錯誤是:警告:爲foreach()提供了無效的參數。 $ user-> data看起來是一個[0]的數組; – ToddN

回答

36

你也許想做到以下幾點:

foreach($user->data as $mydata) 

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

這就是我一直在尋找的!奇怪,我以爲我試過這個,謝謝。 – ToddN

+0

非常感謝你這是我正在尋找! –

6

你需要告訴它通過所有要使用的索引data,或雙循環。

例如,要得到在第四指數值外陣列:

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

} 
4

$user->data是一組對象。數組中的每個元素都有一個namevalue屬性(以及其他屬性)。

嘗試把第二foreach第一。

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

是的,謝謝你@火箭這是我需要的,喬納斯先回答= p – ToddN

+0

@ToddN:Darn,被76秒毆打:-P –