PHP, распарсить JSON

787
08 января 2017, 19:50

Здравствуйте

Есть JSON, который выглядит так :

{
"response": {
"count": 10,
"items": [{...}, {...}, {...}, {...}]
}
}

Каждый элемент массива items либо содержит, либо не содержит массив copy_history В общем виде массив items выглядит так :

"items": [{
"id": 111,
"from_id": -119473366,
"owner_id": -119473366,
"date": 1483779506,
"marked_as_ads": 0,
"post_type": "post",
"text": "",
"copy_history": [{
"id": 30679,
"owner_id": -96126130,
"from_id": -96126130,
"date": 1483772560,
"post_type": "post",
"text": "",
"attachments": [{
"type": "photo",
"photo": {
"id": 456240780,
"album_id": -7,
"owner_id": -96126130,
"user_id": 100,
"photo_75": "https://pp.vk.me/...a3e/0zDlnwXV97M.jpg",
"photo_130": "https://pp.vk.me/...a3f/is7lDvyh3JE.jpg",
"photo_604": "https://pp.vk.me/...a40/Z6vXcOY-cf4.jpg",
"photo_807": "https://pp.vk.me/...a41/g9QedfvZoZg.jpg",
"width": 640,
"height": 521,
"text": "",
"date": 1483140936,
"post_id": 29964,
"access_key": ""
}
}]

Необходимо пройтись по каждому из элементов items, получить из него значение поля id и узнать, есть ли в нем массив copy_history.

помогите, пожалуйста. заранее благодарен

Answer 1

По логике вещей, я бы сделал так:

$json = '{"response": {"count": 10, "items": [{...}, {...}, {...}, {...}] }}';
$arr = json_decode($json, true);
$res = [];
for($i = 0; $i < count($arr['response']['items']); $i++){
   $copy_history = 0;
   if(isset($arr['response']['items'][$i]['copy_history'])){
      $copy_history = 1;
   };
   array_push($res, Array(['id'] => $arr['response']['items'][$i]['id'], ['copy_history'] => $copy_history));
};
READ ALSO
Выводит иероглифы вместо русских букв

Выводит иероглифы вместо русских букв

Почему не выводит русские символы?

510
Работа с phpQuery возникает ошибка при запуске foreach Invalid argument supplied for foreach()

Работа с phpQuery возникает ошибка при запуске foreach Invalid argument supplied for foreach()

Знания php у меня сырые, решил потренироваться с парсингом данных с сайта с помощью phpQuery остановился в самом начале и уже довольно продолжительное...

419
Разширеный поиск в yii2

Разширеный поиск в yii2

Доброго времени суток! Есть три таблицы (house, apartment, land_parts)На сайте есть поиск (расширенный поиск так сказать)

514