Существует множество примеров использования RecursiveIterator для сглаживания древовидной структуры .. но как насчет его использования, чтобы взорвать древовидную структуру?A RecursiveParentChildIterator - как рекурсивныйDirectoryIterator
Есть элегантный способ использовать это, или какая-либо другая библиотека SPL рекурсивно построить дерево (читайте: превратить плоский массив в массив произвольной глубины) дала таблицу, как это:
SELECT id, parent_id, name FROM my_tree
EDIT: Вы знаете, как это сделать с помощью Каталогов?
$it = new RecursiveDirectoryIterator("/var/www/images");
foreach(new RecursiveIteratorIterator($it) as $file) {
echo $file . PHP_EOL;
}
.. Что делать, если вы могли бы сделать что-то вроде этого:
$it = new RecursiveParentChildIterator($result_array);
foreach(new RecursiveIteratorIterator($it) as $group) {
echo $group->name . PHP_EOL;
// this would contain all of the children of this group, recursively
$children = $group->getChildren();
}
: END EDIT
Возможно, вы захотите указать вход/выход exa mple – Gordon
@ Gordon Действительно, i/o может быть чем угодно (mysqli result => ассоциативный массив/некоторый объект .. что угодно) - то, что я действительно ищу, - это элегантный способ, используя SPL, а не какой-то домашний материал, чтобы преобразуйте результаты вышеуказанного запроса в объект или массив, который понимает, например, что «строка 3 является дочерним элементом строки 7, потому что (parent_id в строке 3) == (id в строке 7)». –
@ Stephen причина, по которой я предложил дать пример, объясняется тем, что дерево терминов не слишком хорошо известно среди толпы PHP, но если вы приведете пример, люди могут придумать решение, даже если они не знают они просто работали с деревом. – Gordon