Использование PHP foreach для создания массива значений из данных JSON - PullRequest
1 голос
/ 14 ноября 2010

Я впервые работаю с данными JSON, и у меня есть немного PHP, чтобы получить некоторые данные JSON, как показано ниже (за исключением сотен measuregrps в body ).

$json = file_get_contents("http://wbsapi.withings.net/measure?action=getmeasures");
$json_o = json_decode($json);

Как использовать foreach, скажем, для создания одномерного массива значений для типа = 1?

    {
        "status": 0,
        "body": {
            "updatetime": 1249409679,
            "measuregrps": [
                {
                    "grpid": 2909,
                    "attrib": 0,
                    "date": 1222930968,
                    "category": 1,
                    "measures": [
                        {
                            "value": 79300,
                            "type": 1,
                            "unit": -3
                        },
                        {
                            "value": 652,
                            "type": 5,
                            "unit": -1
                        },
                        {
                            "value": 178,
                            "type": 6,
                            "unit": -1
                        },
                        {
                            "value": 14125,
                            "type": 8,
                            "unit": -3
                        }
                    ]
                },
                {
                    "grpid": 2908,
                    "attrib": 0,
                    "date": 1222930968,
                    "category": 1,
                    "measures": [
                        {
                            "value": 78010,
                            "type": 1,
                            "unit": -3
                        }
                    ]
                },
                {
                    "grpid": 2907,
                    "attrib": 0,
                    "date": 1222930968,
                    "category": 1,
                    "measures": [
                        {
                            "value": 77300,
                            "type": 1,
                            "unit": -3
                        },
                        {
                            "value": 678,
                            "type": 5,
                            "unit": -1
                        }

                    ]
                },


            ]
        }
    }

Ответы [ 2 ]

2 голосов
/ 14 ноября 2010
$json_o = json_decode($json,true);

$result = array();

foreach ($json_o['body']['measuregrps'] as $measuregrp)
 foreach ($measuregrp['measures'] as $measure)
  if ($measure['type'] == 1)
   $result []= $measure['value'];
0 голосов
/ 14 ноября 2010

Что-то вроде

$values = array();

foreach($json_o->body->measuregrps as $group){
  foreach($group->measures as $measure){
    if($measure->type == 1){
      $values[] = $measure->value;
    }
  }
}

print_r($values);

будет делать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...