У меня есть данные в таблице MySQL (так называемая информация), например:
_______________________ id | текст | родитель | 1 | a | NULL | 2 | b | 1 | 3 | c | 1 | 4 | d | 2 | -----------------------
(id автоматически увеличивается)
Я хочу отображать эти данные на PHP, например:
> a (ID 1) >> b (ID 2) >>> d (ID 4, родительский 2) >> c (ID 3)
Я пытался использовать разные методы, но я не могу заставить их работать в любом случае. Я знаю, что мне нужна рекурсивная функция, но как мне это сделать? Достаточно простого указателя; Благодарю.
Ну, как вы получаете таблицу:
$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']})" } }