Форум на Kuban.ru (http://forums.kuban.ru/)
-   Веб-дизайн и программирование (http://forums.kuban.ru/f1030/)
-   -   Как лучше хранить структурированные данные? (http://forums.kuban.ru/f1030/kak_luchshe_hranit-_strukturirovannye_dannye-3060103.html)

ars_2007 13.09.2012 20:30

Как лучше хранить структурированные данные?
 
Есть многомерный массив, даже скорей не многомерный, а древовидный.
Какии образом его лучше сохранять/читать?
Тут либо XML либо еще как, например свое написать.
Кто что подскажет?

Kuba 13.09.2012 21:02

Сериализация о чем нибудь говорит ??

Kuba 13.09.2012 21:30

Есть еще Json.

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

Гламурный Креведко 13.09.2012 21:33

Прежде всего надо отталкиваться от того, что в массиве и зачем

ars_2007 13.09.2012 21:42

[quote=Гламурный Креведко;26826624] Прежде всего надо отталкиваться от того, что в массиве и зачем [/quote]
что-то типа
array("abc"=>def,array(1,2,3),array(array("a1"=>array(1,2,3)))) и т.п.

ЗЫ
по идее сериализации должно хватить.
но хотелось бы по-модному: xml кокойты =))

ars_2007 13.09.2012 22:00

[quote=Kuba;26826577]Очень интересно узнать твои идеи по поводу "свое написать",[/quote]
рекурсивно пропарсить, как же еще.

Искусственный Интеллект1 13.09.2012 22:36

0-Украинские субтитры > че, где хранить собираешься? ниче нипанятно. в базе данных или php. Нужно нормально формировать задачу.
Если нужен просто массив, который в php можно было использовать, то есть вариант в файл записать этот массив с помощью функции var_export() (и естественно других ф-ий) а потом просто инклудить.

ars_2007 13.09.2012 23:37

[quote=Искусственный Интеллект1;26827566]че, где хранить собираешься? ниче нипанятно. в базе данных или php[/quote]
для хранения структурированных база данных подходит слабо, не? =)
А в php данные вообще не хранят. Хранят в файлах, если ты конечно не шайтан. =))

Kuba 14.09.2012 00:04

mongo подходит не слабо

ars_2007 14.09.2012 00:07

Не знаю, чо такое mongo, но спасибо, попробую с сериализацией.
Надеюсь, особых косяков там не замечалось.

ars_2007 14.09.2012 23:56

Насчет сериализации.
А оно не начнет глючить, если, к примеру, данные насохраняю, и прийдется перелазить в следующую версию пхп?
А то будет очень готично. И главное, радостно, если все полетит из-за несоотвецтвий версий и придется писать парсер, чтобы пересохранить =)

ars_2007 15.09.2012 19:22

Га?

Kuba 15.09.2012 19:55

все нормально будет

ars_2007 15.09.2012 20:53

(на будущее): А как удалять из многомерного массива?
Допустим, $a=array("abc"=>"1","abcd"=>"2","abcde"=>"3");
и надо удалить $a[abcd], то array_splice($a,1,1) вроде не покатит, потому что мы кагбы и не знаем, на какой оно позиции.
unset делать? unset($a[abcd])?
Когда-то сталкивался с его глюком, что оно не удаляло, а делало пустым, но может то было токо под винды и кажеццо еще под php3. Может щас оно и нормально ансеттит. но с тех пор не пользовался.

lublurtk 15.09.2012 21:07

13-Гавайские субтитры >а проверить не вариант?
unset юзай.
можно еще сделать ф-цию которая циклом будет добавлять нужные значения в новый массив и возвращать его.
и у тебя в примере ассоциативный массив. [url]http://dmitriydenisov.com/php-mysql/php-basics/massivy-php.html[/url]

ars_2007 15.09.2012 23:08

ok
пасибо

ars_2007 05.10.2012 00:43

А как сделать динамический ансет?
ну вот есть у меня $a=array("abc"=>def,array(1,2,3),array(array("a1"=>ar ray(1,2,3)))) и т.п.

В форме есть текстовое поле $a_kill с последующим unset($a[$_POST[a_kill]]).

Каким образом грохнуть, скажем, значение "abc" в массиве $a, с юзаньем формы?

ars_2007 05.10.2012 19:18

Да, вопрос трудный.
И есть подозрение, что он еще и невыполнимый. Во всяком случае, на данном уровне развития пхп.

Протез 12.10.2012 23:09

16-Гавайские субтитры >
unset удаляет из массива без перестройки ключей.
Т.е. $array=array(1,2,3) и unset($array[1]) сделает вот такое
$array[0] => 1
$array[2] => 3
для нормального удаления неассоциативных массивов рекомендую array_splice()

ars_2007 23.12.2012 21:56

Тут возникла надобность сохранить объект в удобоваримом формате и кое-что подправить.
Как это сделать?
Через var_export вроде нормуль, токо, во первых, как его инклудить потом, чтобы присвоить назад, т.к. оно начинается со слова array..... (править каждый раз, что ли, или же если поставить перед этим $a=, то покатит?).
И что делать, если в этом объекте есть бинарные данные.
Вижу, что бинарное нихрена не сбережоццо, если делать просто через var_export($a) и потом писать в файл.

p3003 14.01.2013 00:18

Только RDF. Не пожалеете.

ars_2007 14.01.2013 17:23

20-p3003 >
та я уже свой rdf наваял, т.к. сериализация оказалась тормозным процессом, да и довольно неудобным для обновления данных. =)


Текущее время: 07:30. Часовой пояс GMT +3.