|
|
|
|
|
для: Артем125
(29.09.2009 в 20:04)
| | Это не много, она у вас не больше полумегабайта будет - т.е. можете как угодно её распластывать в памяти скрипта - до ограничения в 8 Мб не добраться (причем 8Мб - это минимум, сейчас не редкость, когда одному скрипту отводится и 32 Мб оперативной памяти). | |
|
|
|
|
|
|
|
для: cheops
(29.09.2009 в 19:58)
| | >1.1 если таблица большая, как это по времени?
Пока даже не представляю. Делаю каталог, разделов 15, в каждом уровня по 3, 15*5*15 наверно. В таблице хранятся три переменные, два id(6) и parents(6) и char name (255). Самому интересно )))
>Тут нужно посмотреть, возможно, вам будет удобнее использовать не один, а два массива (под данные и под отношения) - если вы по памяти не сильно ограничены.
Про ограничения ничего пока не знаю, а это имеется ввмду где-то на хостинге?? )) | |
|
|
|
|
|
|
|
для: Артем125
(29.09.2009 в 19:54)
| | >1.1 если таблица большая, как это по времени?
В любом случае в конечном итоге получится быстрее, чем ходить по ней рекурсивной функцией? А на сколько большая таблица (В Мб)?
>1.2 в ассоциативный массив вытаскивать, т.е. mysql_fetch_array?
>2. буферный массив делать двухмерный, или трехмерный, или ассоциативным поскольку
>каждая запись в таблице состоит из трех элементов, два int, один char
Тут нужно посмотреть, возможно, вам будет удобнее использовать не один, а два массива (под данные и под отношения) - если вы по памяти не сильно ограничены. | |
|
|
|
|
|
|
|
для: cheops
(29.09.2009 в 19:49)
| | спасибо, подскажите пожалуйста:
1. из базы вытаскиваю все записи в один массив:
1.1 если таблица большая, как это по времени?
1.2 в ассоциативный массив вытаскивать, т.е. mysql_fetch_array?
2. буферный массив делать двухмерный, или трехмерный, или ассоциативным поскольку каждая запись в таблице состоит из трех элементов, два int, один char | |
|
|
|
|
|
|
|
для: Артем125
(29.09.2009 в 19:47)
| | Можно и так - предварительно массив вытащить в память и рекурсивно по нему ходить. Вполне здоровый подход. | |
|
|
|
|
|
|
|
для: cheops
(29.09.2009 в 19:43)
| | nested sets я смотрел, а в отношении моего алгоритма какой вердикт и скорость работы?
Я переходил по ссылке, там рекурсивно дергается база, постоянно, в моем же случае один раз | |
|
|
|
|
|
|
|
для: Артем125
(29.09.2009 в 19:27)
| | Хм... а в чем сложность? Да, очень часто такие задачи решают рекурсивно http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=18452. | |
|
|
|
|
|
|
|
для: Артем125
(29.09.2009 в 19:27)
| | Используйте nested sets. И рекурсия не понадобится. | |
|
|
|
|
 4.7 Кб |
|
| Привет всем,
В прикрепленных файлах дерево и порядок обхода
Оператором select мы выбираем из базы три значения id, parent, name. Далее этот ассоциативный массив необходимо отсортировать так как показано в прикрепленном файле, в том же порядке.
пока затрудняюсь придумать алгоритм, видимо будет с рекурсией.
Что -то получилось, будет ли работать )
алг:
1) нахождение уникальной ветки или прохождение ветки по данным П.4
2) запись ветки в массив, запись значения родителя последнего узла
3) поиск соседнего узла по значению родителя
4) если сосед найден, то перемещение указателя на соседа
5) переход в П.1 | |
|
|
|
|