|
|
|
| Здравствуйте.
Есть следующий массив.
Array
(
[/Bla-bla-bla/] => Array
(
[path] => /Bla-bla-bla/
[title] => Категория 1
[tags] =>
[archive] => false
[level] => 1
)
[/Dla-dla-dla/] => Array
(
[path] => /Dla-dla-dla/
[title] => Категория 2
[tags] =>
[archive] => false
[level] => 1
)
[/Dla-dla-dla/Rubrika1/] => Array
(
[path] => /Dla-dla-dla/Rubrika1/
[title] => Рубрика 1
[tags] =>
[archive] => false
[level] => 2
)
[/Bla-bla-bla/Rubrika2/] => Array
(
[path] => /Bla-bla-bla/Rubrika2/
[title] => Рубрика 2
[tags] =>
[archive] => false
[level] => 2
)
[/Bla-bla-bla/Rubrika1/Podrubrika1/] => Array
(
[path] => /Bla-bla-bla/Rubrika1/Podrubrika1/
[title] => Подрубрика 1
[tags] =>
[archive] => false
[level] => 3
)
[/Bla-bla-bla/Rubrika1/Podrubrika2/] => Array
(
[path] => /Bla-bla-bla/Rubrika1/Podrubrika2/
[title] => Подрубрика 2
[tags] =>
[archive] => false
[level] => 3
)
)
|
Этот массив надо разбить на 3 массива.
В первый массив скидать все ячейки у которых level=1
Во второй массив скидать все ячейки у которых level=2
В третий массив все у которых level=3
И ещё у второго и третьего массива должны появиться дополнительные поля (о родителе.)
В поле родителя нужно записать path родителя.
Может быть это не очень хороший алгоритм .... но я другово не смог придумать.
А делается это всё для того, чтобы в итоге вывести в таком виде:
* Категория 1
o Рубрика 1
o Рубрика 2
+ Подрубрика 1
* Категория 2
o Рубрика 1
Может быть кто то предложит более изящьное решение ?
У меня до работоспособного кода эту идею довести не получилось (может быть потому что плохой алгоритм.)
Заранее спасибо за любую помощь. (изменить структуру базы данных не предлогайте.) | |
|
|
|
|
|
|
|
для: Oligarx
(19.05.2008 в 18:38)
| | А откуда получаете этот массив, как следствие запроса как базе? | |
|
|
|
|
|
|
|
для: sim5
(19.05.2008 в 19:10)
| | да. Используя функцию .... получения информации из базы. (эту функцию мне изменять нельзя. И структуру базы тоже.) | |
|
|
|
|
|
|
|
для: Oligarx
(19.05.2008 в 21:29)
| | Help mi pliz. Guru, where are you ? | |
|
|
|
|
|
|
|
для: Oligarx
(19.05.2008 в 21:29)
| | Ну а почему тогда не организовать вывод дерева сразу при обращении к базе? | |
|
|
|
|
|
|
|
для: sim5
(20.05.2008 в 04:21)
| | потому что в базе они хранятся именно так ... все в одной таблице. | |
|
|
|
|
|
|
|
для: Oligarx
(20.05.2008 в 23:59)
| | Вообще-то, хранят обычно id категории, которая имеет id родителя. У корневой категории id равен 0, а у вложенных категорий id родителя равно id категории лежащей на уровень выше. Достаточно рекурсивного запроса, и вы получите свое дерево, а в разделе MySQL сможете увидеть готовые примеры этому. | |
|
|
|