Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> оптимизация данных, оптимизация данных 
V
    Опции темы
drpain
Дата 3.10.2007, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 27.9.2007

Репутация: нет
Всего: нет



Дотрого времени суток!!!

Уважаемые профи, хотелось бы поинтересоваться, как было бы лучше хранить данный с древовидной связью, тоесть родитель, от него несколько детей, от каждого ребенка еще несколько..... так вот, я хотел спросить как лучше всего хранить эту информацию, потомучто я делал по разному и одномерным массивом, и многомерным, класс свой писал, подобие С++ List даже делал, но вот самого оптимального метода сам найти не смог, Хотелось бы узнать как это делать правельней всего...  Зарание благодарен.
PM MAIL   Вверх
dsCode
Дата 3.10.2007, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: нет
Всего: 26



drpain, массив в php - это Вам и "массив", и "матрица", и "динамический список", и "дерево" и ... много чего еще. Те, кто изначально программировал на PHP, воспринимают язык Си, например, как нечно страшное ("как это тут нет таких красивых массивов?" "что еще за динамический двунаправленный список"). С другой стороны, программисты, которые изначально программировали на Си, могут воспринять PHP как детскую игрушку (да простят меня за сравнение, я в принципе, и сам на PHP пишу), в которой не написать правильно можно только, если руки не из того места растут - уж больно там все красиво и хорошо сделано (конструктор лего. В PHP хоть как пиши (ну, если голова есть на плечах) - все равно правильно будет. Но.. это и верно. Облегчение рутинной работы - главная идея прогресса =)) (это, кстати, причина, по которой за PHP платят меньше всего (в отличии от Си или Java, например), потому что каждый второй студент поставил Денвер, "изучил" его (PHP) и быстро записался в ряды программистов). Профессионалов PHP мало сегодня.

Поэтому, (сейчас пошла часть, относящаяся к топику) - чем плох массив? Его, к тому же, можно потом сериализовать и хранить в куках (или в файлах - строкой в общем), и потом снова превращать в многоуровневое дерево.

В принципе, можно и объектами - root  объект, у него есть проперть children, которая является массивом объектом - таких же, как рут.

Цитата(drpain @  3.10.2007,  09:56 Найти цитируемый пост)
как было бы лучше хранить данный с древовидной связью

Массивы - для обработки, а если именно хранить (для последующего обращения), то база - самый хороший вариант (будет id и parent_id у каждой записи - исходя из этого можно построить дерево неограниченной вложенности и длины).

Цитата(drpain @  3.10.2007,  09:56 Найти цитируемый пост)
но вот самого оптимального метода сам найти не смог

а по каким параметрам Вы определяли оптимальность? Скорость работы? Удободоступность нодов в дереве? Еще может по каким? Нельзя что-то конкретное посоветовать, потому что для достижения самого оптимального варианта, может быть привязка к конкретному таску.


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
drpain
Дата 3.10.2007, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 27.9.2007

Репутация: нет
Всего: нет



dsCode, спасибо за оказаное внимание

Я просто изначально сидел на С++, там все понятно и по крайней мере для меня являлось нормой, указатели, преобразование типов, ссылки, ну и т.д. в РНР я с каждым днем нахожу отличия, которые гдето радуют гдето огорчают, ну да ладно.... 


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

PM MAIL   Вверх
dsCode
Дата 3.10.2007, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: нет
Всего: 26



drpain, ну я так и понял сразу, поэтому и упомянул про сериализацию. Есть стандартные функции в PHP: serialize($array) и unserialize($string). Первая преобразует массив в строку особого (сериализованного) формата, которую можно записать в файл. Кстати, данные сессий, например, так и хранятся, но тем не менее, почему-то мы обращаемся к данным сессий через массив. А дело в unserialize($string), которая делает обратное преобразование - из строки в массив.

Поэтому - перед записью в файл - сериализуйте, при чтении - unсериализуйте. Доступ к элементам - по ключу - как в обычном массиве. 
Цитата(drpain @  3.10.2007,  12:49 Найти цитируемый пост)
с максимально возможной скоростью нахождения и замены элементов

если поиск по значению, - можно и циклом перебрать, можно (и даже лучше, наверное) стандартной функцией array_search($value, $array) (возвращает ключ найденного элемента, дальше по этому ключу - апдейт). В общем - посмотрите стандартные функции для работы с массивами.


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
Vaulter
Дата 3.10.2007, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: нет
Всего: 22



поищите в разделе PHP слова 
"nested sets".
может найдете даже саму либу...



--------------------
PM MAIL WWW ICQ   Вверх
logiciel
Дата 3.10.2007, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 5.7.2006

Репутация: нет
Всего: нет



А почeму бы нe XML? В PHP5 работа с XML-файлами ужe вполнe хорошо рeализована.
PM MAIL   Вверх
drpain
Дата 4.10.2007, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 27.9.2007

Репутация: нет
Всего: нет



Всем, огромное спасибо, особенно dsCode, Вы подсказали именно то что мне нужно, премного благодарен. smile 

Это сообщение отредактировал(а) drpain - 4.10.2007, 09:45
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.1131 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.