Попытка получить многопоточные / вложенные комментарии в PHP

У меня есть данные в таблице MySQL (называемой информацией), например:

_______________________
id | текст | родитель |
1   | а | NULL   |
2   | б | 1      |
3   | с | 1      |
4   | д | 2 |
-----------------------

(идентификатор автоматически увеличивается)

Я хочу отобразить эти данные в PHP, например, так:

> а (ID 1)
>> б (ID 2)
>>>d (ID 4, родитель 2) 
>> с (ID 3)

Я пробовал разные методы, но я не могу заставить их работать в любом случае. Я знаю, что мне нужна рекурсивная функция, но как мне это сделать? Достаточно простого указателя; Благодарю.

1 ответ

Ну, как вы получаете таблицу:

$parents = array();
$children = array();
while($row = ...){
    if($row['parent'] == null){
         $parents[] = array ('id' => $row['id'], 'text' => $row['text']) 
    }
    else{
         if(!isset($children[$row['parent']])) $children[$row['parent']] = array();
         $children[$row['parent']][] = array ('id' => $row['id'], 'text' => $row['text']) 
    }
}

Итерация с использованием этой функции:

function displayChildren($array, $id, $char = ">"){
   foreach($array as $ch){
        if($ch['id']  == $id)
           echo "$char {$ch['text']} (ID {$ch['id']})"
   }
}
Другие вопросы по тегам