Собственно. Имеется вытянутый через VK API JSON со всеми сообщениями пользователя. Этот JSON декодируется и в итоге получается многомерный массив. В этом массиве каждый конкретный массив -- одно сообщение. В сообщении, помимо текста, может быть пересылаемое сообщение. В пересылаемом сообщении -- ещё пересылаемые сообщения (т. е. вложенность фактически бесконечна). И в каждом сообщении (как в обычном, так и в пересланном) может быть приложение (или несколько приложений).
Для примера:
Для получения доступа к приложениям в обычном сообщении нужно обратиться:
$arr[номер_сообщения]["attachments"][номер_вложения_в_сообщении][тип_вложения][элемент_со_ссылкой_на_вложение]
Для приложений в пересланном сообщении:
$arr[номер_сообщения]["fwd_messages"][номер_пересланного_сообщения]["attachments"][номер_вложения_в_сообщении][тип_вложения][элемент_со_ссылкой_на_вложение]
Если что --
https://vk.com/dev/message.
Должен получаться HTML с иерархической структурой (блок с сообщением, внутри которого блок с пересланным сообщением, а внутри этого блока -- ещё один; в каждом таком блоке -- по изображению). В общем, то представление, которое есть у сообщений на самом сайте.
Проблема состоит в том, как всё это обрабатывать. Если уровней 1 или 2 -- всё просто. А вот если этих уровней может быть бесконечно много -- уже проблема.
Как это реализовать, учитывая возможную неограниченную вложенность?