Попытка получить многопоточные / вложенные комментарии в 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']})"
}
}