Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: сложная сортировка ассоциотивного массива
 
 автор: Oligarx   (19.05.2008 в 18:38)   письмо автору
 
 

Здравствуйте.

Есть следующий массив.

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


Может быть кто то предложит более изящьное решение ?

У меня до работоспособного кода эту идею довести не получилось (может быть потому что плохой алгоритм.)


Заранее спасибо за любую помощь. (изменить структуру базы данных не предлогайте.)

   
 
 автор: sim5   (19.05.2008 в 19:10)   письмо автору
 
   для: Oligarx   (19.05.2008 в 18:38)
 

А откуда получаете этот массив, как следствие запроса как базе?

   
 
 автор: Oligarx   (19.05.2008 в 21:29)   письмо автору
 
   для: sim5   (19.05.2008 в 19:10)
 

да. Используя функцию .... получения информации из базы. (эту функцию мне изменять нельзя. И структуру базы тоже.)

   
 
 автор: Oligarx   (19.05.2008 в 22:46)   письмо автору
 
   для: Oligarx   (19.05.2008 в 21:29)
 

Help mi pliz. Guru, where are you ?

   
 
 автор: sim5   (20.05.2008 в 04:21)   письмо автору
 
   для: Oligarx   (19.05.2008 в 21:29)
 

Ну а почему тогда не организовать вывод дерева сразу при обращении к базе?

   
 
 автор: Oligarx   (20.05.2008 в 23:59)   письмо автору
 
   для: sim5   (20.05.2008 в 04:21)
 

потому что в базе они хранятся именно так ... все в одной таблице.

   
 
 автор: sim5   (21.05.2008 в 03:11)   письмо автору
 
   для: Oligarx   (20.05.2008 в 23:59)
 

Вообще-то, хранят обычно id категории, которая имеет id родителя. У корневой категории id равен 0, а у вложенных категорий id родителя равно id категории лежащей на уровень выше. Достаточно рекурсивного запроса, и вы получите свое дерево, а в разделе MySQL сможете увидеть готовые примеры этому.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования