2012-05-25 2 views
17

Хотите знать, почему мой PHP-код не будет отображать все «Значение» «ценностей» в данных JSON:Синтаксический JSON массив PHP Еогеасп

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

Первый Еогеасп работает отлично, но второй выдает ошибку.

{ 
    "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 использовать, или двойную петлю через все.

Например, чтобы получить значения в 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"; 
    } 

} 
4

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

Да, спасибо @Rocket, это то, что мне было нужно, Джонас ответил первым = p – ToddN

+0

@ToddN: Darn, избили на 76 секунд :-P –

Смежные вопросы