使用PHP foreach解析JSON数组

Tod*_*ddN 22 php foreach json

想知道为什么我的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";
}
Run Code Online (Sandbox Code Playgroud)

第一个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"
            }, ...
Run Code Online (Sandbox Code Playgroud)

Jon*_*abe 46

您可能想要执行以下操作:

foreach($user->data as $mydata)

    {
         echo $mydata->name . "\n";
         foreach($mydata->values as $values)
         {
              echo $values->value . "\n";
         }
    }        
Run Code Online (Sandbox Code Playgroud)


Jon*_*n M 7

您需要告诉它使用哪个索引data,或者双循环遍历所有索引.

例如,要获取外部数组中第4个索引中的值:

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

通过所有:

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

}   
Run Code Online (Sandbox Code Playgroud)


Roc*_*mat 5

$user->data是一个对象数组。数组中的每个元素都有一个nameandvalue属性(以及其他属性)。

尝试将第二个放在foreach第一个里面。

foreach($user->data as $mydata)
{
    echo $mydata->name . "\n";
    foreach($mydata->values as $values)
    {
        echo $values->value . "\n";
    }
}
Run Code Online (Sandbox Code Playgroud)