Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Сохранение и загрузка масивов...
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (2): [1] 2 »   

> Описание: как это сделать?
Ray Wen Администратор
Отправлено: 06 Февраля, 2005 - 08:57:58
Post Id



Собиратель шишек...


Покинул форум
Сообщений всего: 2602
Дата рег-ции: Янв. 2005  
Откуда: Волгоград

Карма 21




Как лучьше всего реализовать сохранение и последующую загрузку и использование масива? Вроде того что на ExBB, но дабы не тырить скрипты и не посегать на авторские права, может кто нибудь подсказать какой нибудь способ или принцип работы?
 
 Top
TvoyWeb Администратор
Отправлено: 06 Февраля, 2005 - 15:16:50
Post Id



Главный здесь


Покинул форум
Сообщений всего: 7072
Дата рег-ции: Нояб. 2003  
Откуда: Tashkent Uz

Карма 52




Ray Wen пишет:
не тырить скрипты и не посегать на авторские права,

Это здесь не причем. Есть некоторые вещи, которые по другому никак не сделаешь.
Если массив многомерный, то ИМХО лучше хранить в сериализованном виде.
 
 Top
ita
Отправлено: 06 Февраля, 2005 - 15:27:09
Post Id



Честный чайник


Покинул форум
Сообщений всего: 46
Дата рег-ции: Янв. 2005  
Откуда: dp.ua

Карма 0




можно так..
сохранение:
CODE:
$array=array();//твой массив
$fp=fopen("filename","w");
fwrite($fp,join("\r\n",$array));
fclose($fp);
чтение:
CODE:

$array=file("filename");

ток перед этим желательно каждый элемент array через trim() пропустить, вернее обязательно если не уверен, что в элементах может пристуствовать символ окончания строки в конце какого-то элемента массива
 
 Top
TvoyWeb Администратор
Отправлено: 06 Февраля, 2005 - 16:01:33
Post Id



Главный здесь


Покинул форум
Сообщений всего: 7072
Дата рег-ции: Нояб. 2003  
Откуда: Tashkent Uz

Карма 52




ita
Этот вариант не годится. А если массив ассоциативный ?
Есть еще один вариант. Там что то с экспортом вроде связано. Вспомню напишу.
 
 Top
ita
Отправлено: 06 Февраля, 2005 - 17:00:32
Post Id



Честный чайник


Покинул форум
Сообщений всего: 46
Дата рег-ции: Янв. 2005  
Откуда: dp.ua

Карма 0




TvoyWeb
а если НЕ ассоциативный? не уточнялось о каком массиве идет речь.
для ассоциативного:
$str = print_r($array);
$str в файл, файл читаем, регекспами разбираем. (не делать так ни в коем случае Улыбка )
со всем уважением, но не стот говорить "не годится" не зная всех условий.

делаем строку..
$str ="";
while (list ($key, $val) = each ($_POST)) {
$str .= $key."::разделитель::".$val."\r\n";
}
$str в файл, файл читаем c пом file()
построчно просмотреть в цикле и слепить ассоциативный массив.
не уверен что самый лучший вариант, но первое, что в голову пришло.
З.Ы.
хранить массив в файле идиотизм. в файле нужно хранить данные.
 
 Top
Ray Wen Администратор
Отправлено: 07 Февраля, 2005 - 00:46:16
Post Id



Собиратель шишек...


Покинул форум
Сообщений всего: 2602
Дата рег-ции: Янв. 2005  
Откуда: Волгоград

Карма 21




ita пишет:
хранить массив в файле идиотизм. в файле нужно хранить данные.

Так массив и есть хранилище данных... Я сейчас просто записываю данные в файл по строчно, в каждой строчке элемент массива поделенный в свою очередь другими делителями. Но доступ и поиск в таком массиве мягко говоря не удобен... Приходиться постоянно пользоваться циклами в каждом действии... Конечно если много думать над проблемой она решиться, но я за последние дни себе думалку сломал уже, по тому и прошу помощи... вместе легче думаеться.
То что делаю сейчас я:
CODE:
$fp = file ("array.inc");

$number_array = count($fp);

for ($i=0; $i<$number_array; $i++) {
$line = explode ( '"::"', $fp[$i] );
echo $line[0];
echo $line[1];
echo $line[2];
echo $line[3];
}

Это приемлемо при выводе, но если мне нужно только один элемент масиво, приходиться прогонять цикл по всем чтобы найти нужный. Возможно есть какой нить способ сделать все проще...
 
 Top
TvoyWeb Администратор
Отправлено: 07 Февраля, 2005 - 02:10:29
Post Id



Главный здесь


Покинул форум
Сообщений всего: 7072
Дата рег-ции: Нояб. 2003  
Откуда: Tashkent Uz

Карма 52




ita
Цитата:
со всем уважением, но не стот говорить "не годится" не зная всех условий.

Поверь я тоже со всем уважением.
Но я привык так, если даю совет, то пытаюсь чтобы он подошел под любые условия (если эти условия не известны).
Рассмотрим такой массив:
CODE:
Array(
[1101155378] => Array(
[p_id] => 1
[post] => Some text
[ip] => xx.xxx.xx.x
[smiles] => 1
[sig] => 1
[posted] => Array(
[1] => 15
[7] => 41
[12] => 8
)
)
[1101154387] => Array(
[p_id] => 72
[post] => Second some text
[ip] => x.xx.xxx.xxx
[smiles] => 0
[sig] => 0
[posted] => Array(
[3] => 5
[5] => 18
[9] => 1
)
)
[1101152356] => Array(
[p_id] => 44
[post] => Third some text
[ip] => xxx.xxx.xxx.xxx
[smiles] => 1
[sig] => 0
[posted] => Array(
[4] => 15
[5] => 28
[6] => 17
)
)
)

Любое хранение данных - это хранение, но практичность того или иного метода заключается в быстром (без заморочек) экспорте и импорте из базы (то бишь файла, в нашем случае). В случае с хранением массивов данных , также не маловажен, если не сказать что очень важен, момент обращения к любому элементу массива без его перебора.
То есть, имеем массив данных, экспортиуем его и после импорта (путем несложных и не !медленных операций) получаем этот же массив данных в том же виде что и перед экспортом.
Цитата:
файл читаем, регекспами разбираем. (не делать так ни в коем случае )

Как информация принимается, но как довод нет Улыбка Иначе зачем писать "(не делать так ни в коем случае )" Улыбка
Цитата:
хранить массив в файле идиотизм. в файле нужно хранить данные.

Вот это совсем неверно !!!
И в заключение, хранить многомерные, ассоциативные массивы хранить лучше воспользовавшись функцией serialize (unserialize - обратное восстановление массива) ли бо используя var_export().
О serialize() . Функция сохраняет все свойства значений ключей. Если к примеру $array['key'] - имеет boolean тип , то после unserialize() оно так и останется boolean . Это касается всех восьми типов в PHP. Пожалуй это весомый аргумент в пользу serialize() ( unserialize() ) Улыбка
Сорри о var_export() напишу чуть позже.... бежать пора\n\n(Добавление)
В сущности что писть? Все уже написано
http://forum.dklab.ru/php/heap/D...OrSerialize.html
http://forum.dklab.ru/php/advises/Var_export+evalFasterThanSerialize+unserialize.html
 
 Top
Ray Wen Администратор
Отправлено: 07 Февраля, 2005 - 03:36:47
Post Id



Собиратель шишек...


Покинул форум
Сообщений всего: 2602
Дата рег-ции: Янв. 2005  
Откуда: Волгоград

Карма 21




TvoyWeb
Спасибо... по ссылкам полезная информация. Буду через serialize() ( unserialize(), данных не много и все находиться выше сервера...

Возможно не по теме, но все таки, раз начал... Я делаю некое подобие админки для добавления новостей разными админами сайта... пароли и имена храняться в массиве выше сервера. В достаточной ли они безопасности там, или лучьше применить дополнительные меры? С шифрованием данных и безопасностью пока не сталкивался... по тому дуб дубом в этом деле...
 
 Top
ita
Отправлено: 07 Февраля, 2005 - 04:11:08
Post Id



Честный чайник


Покинул форум
Сообщений всего: 46
Дата рег-ции: Янв. 2005  
Откуда: dp.ua

Карма 0




о serialize() не знал, это выход.
только что там с размером файла..
З.Ы. базы данных рулят Улыбка

все и всегда находится в относительной безопастности Улыбка по http конечно не дотянуться, но все равно пароли в открытом виде лучше не хранить.
пользуйся md5() или crypt()
 
 Top
Ray Wen Администратор
Отправлено: 07 Февраля, 2005 - 04:51:22
Post Id



Собиратель шишек...


Покинул форум
Сообщений всего: 2602
Дата рег-ции: Янв. 2005  
Откуда: Волгоград

Карма 21




ita
Почитал немного про шифрование... ни чего сложного, по тому действительно лучьше воспользоваться... надежнее. Спасибо.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 3 (гостей: 3, зарегистрированных: 0, скрытых: 0)
« PHP/Perl »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0489]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33