на пхп не смогу написать, просто на словах:
это всего лишь одна функция. есть объект "сообщение", у него "комментарии". вот "комментарии" и прокидывается в эту функцию первым аргументом, вторым - уровень вложенности например (изначально ноль). У "комментарии" есть внутренний массив "комментарии", и если он не пустой - то вызывается эта же самая функция таким же образом, только уровень вложенности итерируется на единичку.
может пример на js поможет? )
const message = {
title: 'bla bla',
comments: [
{
text: 'comment1',
comments: [
{
text: 'comment2',
comments: [],
},
{
text: 'comment3',
comments: [
{
text: 'comment4',
comments: [],
},
],
},
],
},
{
text: 'comment5',
comments: [],
},
],
};
function renderComments(comments, level = 1) {
if (!comments || !comments.length) {
return;
}
comments.forEach(comment => {
console.log('>'.repeat(level), comment.text);
renderComments(comment.comments, ++level);
});
};
renderComments(message.comments)