私の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は正常に機能しますが、2番目はエラーをスローします。
{
"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"
}, ...
次のことをしたいかもしれません:
foreach($user->data as $mydata)
{
echo $mydata->name . "\n";
foreach($mydata->values as $values)
{
echo $values->value . "\n";
}
}
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";
}
}
$user->data
はオブジェクトの配列です。配列内の各要素には、name
およびvalue
プロパティ(およびその他)があります。
2番目のforeach
を1番目の内部に配置してみてください。
foreach($user->data as $mydata)
{
echo $mydata->name . "\n";
foreach($mydata->values as $values)
{
echo $values->value . "\n";
}
}