Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/10: Рейтинг темы: голосов - 10, средняя оценка - 5.00
localhost
58 / 58 / 9
Регистрация: 02.09.2009
Сообщений: 170
1

Дерево категорий из списка записей БД

07.07.2012, 14:49. Просмотров 2072. Ответов 2
Метки нет (Все метки)

Всем привет. Есть записи в DB список категорий.

Загнал в массив:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
            Array
(
    [1] => Array
        (
            [name] => Компы
            [type] => cat
            [key] => 
        )
 
    [2] => Array
        (
            [name] => Телефоны
            [type] => cat
            [key] => 
        )
 
    [3] => Array
        (
            [name] => Ноуты
            [type] => sub
            [key] => 1
        )
 
    [4] => Array
        (
            [name] => Нетбуки
            [type] => sub
            [key] => 1
        )
 
    [5] => Array
        (
            [name] => Нокиа
            [type] => sub
            [key] => 2
        )
 
    [6] => Array
        (
            [name] => Сименс
            [type] => sub
            [key] => 2
        )
 
    [7] => Array
        (
            [name] => lenovo
            [type] => item
            [key] => 3
        )
 
    [8] => Array
        (
            [name] => item_t
            [type] => item
            [key] => 1
        )
 
)
Нужно с этого построить следующее:

Компы
--Ноуты
---lenovo
--Нетбуки
--item_t

Телефоны
--Нокиа
--Сименс

Идеи есть - но пака без успешно.
Если кто надумает, буду очень благодарен. Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.07.2012, 14:49
Ответы с готовыми решениями:

Получение списка категорий и записей по этим категориям
Господа знатоки, подскажите, пожалуйста, каким образом правильно выполнять подобные запросы? Есть...

Дерево категорий
Добрый день. Структура таблицы id| parent_id| name 1| 0| раздел1 2| 1| ...

Дерево категорий в компоненте
Всем доброго времени! Натолкнике пожалуйста на мысль, каким образом сделать в своем компоненте...

Конечные ID из дерево категорий
Добрый день. Такая небольшая проблема возникла. У меня есть многоуровневая дерево...

2
13184 / 6572 / 1039
Регистрация: 10.01.2008
Сообщений: 15,069
07.07.2012, 15:08 2
Ссылки - наше всё.
Входной массив
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
$items = array(
    1 => array(
        'name' => 'Компы',
        'type' => 'cat',
        'key'  => null,
    ),
    2 => array(
        'name' => 'Телефоны',
        'type' => 'cat',
        'key'  => null,
    ),
    3 => array(
        'name' => 'Ноуты',
        'type' => 'sub',
        'key'  => 1,
    ),
    4 => array(
        'name' => 'Нетбуки',
        'type' => 'sub',
        'key'  => 1,
    ),
    5 => array(
        'name' => 'Нокиа',
        'type' => 'sub',
        'key'  => 2,
    ),
    6 => array(
        'name' => 'Сименс',
        'type' => 'sub',
        'key'  => 2,
    ),
    7 => array(
        'name' => 'lenovo',
        'type' => 'item',
        'key'  => 3,
    ),
    8 => array(
        'name' => 'item_t',
        'type' => 'item',
        'key'  => 1,
    ),
);

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$items = array(...);
 
# корневые элементы
$root = array();
# временная копия всех исходных элементов
$all = $items;
 
foreach ($all as $id => $item) {
    $parent = $item['key'];
    if ($parent)
        $all[$parent]['children'][] = &$all[$id];
    else
        $root[] = &$all[$id];
}
# удаляем, ибо по ссылкам можем ненароком закосячить построенную структуру
unset($all);
 
print_r($root);
1
localhost
58 / 58 / 9
Регистрация: 02.09.2009
Сообщений: 170
07.07.2012, 15:14  [ТС] 3
Огромное спасибо) я ломал голову циклами =)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.07.2012, 15:14

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Иерархичное дерево категорий
Дано иерархичное дерево категорий. Нужно зделать функцию которая будет выводить дерево в таком...

Иерархическое дерево категорий
Дано иерархичное дерево категорий. Нужно зделать функцию которая будет выводить дерево в таком...

Дерево категорий и вывод статей
Ребята, здравствуйте! Очень нужна помощь!!! Пытаюсь сделать дерево категорий. есть 2 таблицы...

Django nsleft nsright - дерево категорий
Как правильно сделать дерево категорий, и нужно-ли, вообще? может просто обойтись parent и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.