Работа с JSON массивами в PHP

Статус
В этой теме нельзя размещать новые ответы.

ImPasha

Software Developer & System Administrator
Автор темы
Друг
1,788
2,142
Приветствую, товарищи читеры.

В общем, недавно решил на шаманить какой-нибудь скрипт, висящий на официальном API ВКонтакте.
Значит шаманю и тут мой мозг получает фриз. Дело в том, что я получаю очень странный, лично для меня, JSON'овский массив. Так вот, дело состоит в следующем.

Вот такой массив мне присылает ВКонтакте. Напомню, что он до сих пор в JSON формате.
Код:
{"type":"message_new","object":{"text":"Какое-то сообщение с картинкой и с документом","attachments":[{"type":"doc","doc":{"id":347730339,"owner_id":191450929,"title":"14581.gif","size":3505832,"ext":"gif","url":"https://link.com","date":1417944406,"type":3,"preview":{"photo":{"sizes":[{"src":"https://link.com/photo.png","width":130,"height":74,"type":"m"},{"src":"https://link.com/photo.jpg","width":100,"height":57,"type":"s"},{"src":"https://link.com/photo.jpg","width":604,"height":340,"type":"x"},{"src":"https://link.com/photo.jpg","width":450,"height":253,"type":"o"}]},"video":{"src":"https://link.com/photo.jpg","width":450,"height":252,"file_size":431725}},"access_key":"e2436bf283c85c96af"}},{"type":"photo","photo":{"id":456242103,"album_id":-6,"owner_id":191450929,"sizes":[{"type":"m","url":"https://link.com/photo.jpg","width":130,"height":130},{"type":"o","url":"https://link.com/photo.jpg","width":130,"height":130},{"type":"p","url":"https://link.com/photo.jpg","width":200,"height":200},{"type":"q","url":"https://link.com/photo.jpg","width":320,"height":320},{"type":"r","url":"https://link.com/photo.jpg","width":400,"height":400},{"type":"s","url":"https://link.com/photo.jpg","width":75,"height":75},{"type":"x","url":"https://link.com/photo.jpg","width":400,"height":400}],"text":"","date":1537350313,"post_id":925}}],"is_hidden":false}}
Я его по максимуму сократил, оставил только самое важное.
Теперь мы с помощью PHP и функции json_decode переводим его в обычный массив. И вот здесь у меня и происходит фриз. Я просто не понимаю, как вытащить всю эту тонну информации.

Я очень тупой в плане теории, поэтому прошу дать мне пример.
В общем, нужно отобразить все вложения в виде текстовой информации, чтобы вышло примерно так:
Код:
[Вложение: Картинка]
[Вложение: Документ]
При этом буду благодарен, если расскажите, как достать URL картинки/документа из этого массива.

Заранее огромное спасибо =)
 

#Rin

Известный
Всефорумный модератор
1,214
1,043
PHP:
<?php
$json = '{"type":"message_new","object":{"text":"Какое-то сообщение с картинкой и с документом","attachments":[{"type":"doc","doc":{"id":347730339,"owner_id":191450929,"title":"14581.gif","size":3505832,"ext":"gif","url":"https://link.com","date":1417944406,"type":3,"preview":{"photo":{"sizes":[{"src":"https://link.com/photo.png","width":130,"height":74,"type":"m"},{"src":"https://link.com/photo.jpg","width":100,"height":57,"type":"s"},{"src":"https://link.com/photo.jpg","width":604,"height":340,"type":"x"},{"src":"https://link.com/photo.jpg","width":450,"height":253,"type":"o"}]},"video":{"src":"https://link.com/photo.jpg","width":450,"height":252,"file_size":431725}},"access_key":"e2436bf283c85c96af"}},{"type":"photo","photo":{"id":456242103,"album_id":-6,"owner_id":191450929,"sizes":[{"type":"m","url":"https://link.com/photo.jpg","width":130,"height":130},{"type":"o","url":"https://link.com/photo.jpg","width":130,"height":130},{"type":"p","url":"https://link.com/photo.jpg","width":200,"height":200},{"type":"q","url":"https://link.com/photo.jpg","width":320,"height":320},{"type":"r","url":"https://link.com/photo.jpg","width":400,"height":400},{"type":"s","url":"https://link.com/photo.jpg","width":75,"height":75},{"type":"x","url":"https://link.com/photo.jpg","width":400,"height":400}],"text":"","date":1537350313,"post_id":925}}],"is_hidden":false}}';
$responce = json_decode($json, true);
$file = file_get_contents($responce["object"]["attachments"][0]["doc"]["url"]);
print($file);
?>
Но если тебе нужны все файлы просто проходишься по массиву через for.
 
  • Нравится
Реакции: ImPasha

ImPasha

Software Developer & System Administrator
Автор темы
Друг
1,788
2,142
PHP:
<?php
$json = '{"type":"message_new","object":{"text":"Какое-то сообщение с картинкой и с документом","attachments":[{"type":"doc","doc":{"id":347730339,"owner_id":191450929,"title":"14581.gif","size":3505832,"ext":"gif","url":"https://link.com","date":1417944406,"type":3,"preview":{"photo":{"sizes":[{"src":"https://link.com/photo.png","width":130,"height":74,"type":"m"},{"src":"https://link.com/photo.jpg","width":100,"height":57,"type":"s"},{"src":"https://link.com/photo.jpg","width":604,"height":340,"type":"x"},{"src":"https://link.com/photo.jpg","width":450,"height":253,"type":"o"}]},"video":{"src":"https://link.com/photo.jpg","width":450,"height":252,"file_size":431725}},"access_key":"e2436bf283c85c96af"}},{"type":"photo","photo":{"id":456242103,"album_id":-6,"owner_id":191450929,"sizes":[{"type":"m","url":"https://link.com/photo.jpg","width":130,"height":130},{"type":"o","url":"https://link.com/photo.jpg","width":130,"height":130},{"type":"p","url":"https://link.com/photo.jpg","width":200,"height":200},{"type":"q","url":"https://link.com/photo.jpg","width":320,"height":320},{"type":"r","url":"https://link.com/photo.jpg","width":400,"height":400},{"type":"s","url":"https://link.com/photo.jpg","width":75,"height":75},{"type":"x","url":"https://link.com/photo.jpg","width":400,"height":400}],"text":"","date":1537350313,"post_id":925}}],"is_hidden":false}}';
$responce = json_decode($json, true);
$file = file_get_contents($responce["object"]["attachments"][0]["doc"]["url"]);
print($file);
?>
Но если тебе нужны все файлы просто проходишься по массиву через for.
Спасибо! Но методом пыток уже сам разобрался.
 
Статус
В этой теме нельзя размещать новые ответы.