1. Ray Wen - 06 Февраля, 2005 - 08:57:58 - перейти к сообщению
Как лучьше всего реализовать сохранение и последующую загрузку и использование масива? Вроде того что на ExBB, но дабы не тырить скрипты и не посегать на авторские права, может кто нибудь подсказать какой нибудь способ или принцип работы?
2. TvoyWeb - 06 Февраля, 2005 - 15:16:50 - перейти к сообщению
Ray Wen пишет:
не тырить скрипты и не посегать на авторские права,
Это здесь не причем. Есть некоторые вещи, которые по другому никак не сделаешь.
Если массив многомерный, то ИМХО лучше хранить в сериализованном виде.
3. ita - 06 Февраля, 2005 - 15:27:09 - перейти к сообщению
можно так..
сохранение:
ток перед этим желательно каждый элемент array через trim() пропустить, вернее обязательно если не уверен, что в элементах может пристуствовать символ окончания строки в конце какого-то элемента массива
сохранение:
CODE:
чтение:$array=array();//твой массив
$fp=fopen("filename","w");
fwrite($fp,join("\r\n",$array));
fclose($fp);
$fp=fopen("filename","w");
fwrite($fp,join("\r\n",$array));
fclose($fp);
CODE:
$array=file("filename");
$array=file("filename");
ток перед этим желательно каждый элемент array через trim() пропустить, вернее обязательно если не уверен, что в элементах может пристуствовать символ окончания строки в конце какого-то элемента массива
4. TvoyWeb - 06 Февраля, 2005 - 16:01:33 - перейти к сообщению
ita
Этот вариант не годится. А если массив ассоциативный ?
Есть еще один вариант. Там что то с экспортом вроде связано. Вспомню напишу.
Этот вариант не годится. А если массив ассоциативный ?
Есть еще один вариант. Там что то с экспортом вроде связано. Вспомню напишу.
5. ita - 06 Февраля, 2005 - 17:00:32 - перейти к сообщению
TvoyWeb
а если НЕ ассоциативный? не уточнялось о каком массиве идет речь.
для ассоциативного:
$str = print_r($array);
$str в файл, файл читаем, регекспами разбираем. (не делать так ни в коем случае )
со всем уважением, но не стот говорить "не годится" не зная всех условий.
делаем строку..
$str ="";
while (list ($key, $val) = each ($_POST)) {
$str .= $key."::разделитель::".$val."\r\n";
}
$str в файл, файл читаем c пом file()
построчно просмотреть в цикле и слепить ассоциативный массив.
не уверен что самый лучший вариант, но первое, что в голову пришло.
З.Ы.
хранить массив в файле идиотизм. в файле нужно хранить данные.
а если НЕ ассоциативный? не уточнялось о каком массиве идет речь.
для ассоциативного:
$str = print_r($array);
$str в файл, файл читаем, регекспами разбираем. (не делать так ни в коем случае )
со всем уважением, но не стот говорить "не годится" не зная всех условий.
делаем строку..
$str ="";
while (list ($key, $val) = each ($_POST)) {
$str .= $key."::разделитель::".$val."\r\n";
}
$str в файл, файл читаем c пом file()
построчно просмотреть в цикле и слепить ассоциативный массив.
не уверен что самый лучший вариант, но первое, что в голову пришло.
З.Ы.
хранить массив в файле идиотизм. в файле нужно хранить данные.
6. Ray Wen - 07 Февраля, 2005 - 00:46:16 - перейти к сообщению
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];
}
$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];
}
Это приемлемо при выводе, но если мне нужно только один элемент масиво, приходиться прогонять цикл по всем чтобы найти нужный. Возможно есть какой нить способ сделать все проще...
7. TvoyWeb - 07 Февраля, 2005 - 02:10:29 - перейти к сообщению
ita
Поверь я тоже со всем уважением.
Но я привык так, если даю совет, то пытаюсь чтобы он подошел под любые условия (если эти условия не известны).
Рассмотрим такой массив:
Любое хранение данных - это хранение, но практичность того или иного метода заключается в быстром (без заморочек) экспорте и импорте из базы (то бишь файла, в нашем случае). В случае с хранением массивов данных , также не маловажен, если не сказать что очень важен, момент обращения к любому элементу массива без его перебора.
То есть, имеем массив данных, экспортиуем его и после импорта (путем несложных и не !медленных операций) получаем этот же массив данных в том же виде что и перед экспортом.
Как информация принимается, но как довод нет Иначе зачем писать "(не делать так ни в коем случае )"
Вот это совсем неверно !!!
И в заключение, хранить многомерные, ассоциативные массивы хранить лучше воспользовавшись функцией 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
Цитата:
со всем уважением, но не стот говорить "не годится" не зная всех условий.
Поверь я тоже со всем уважением.
Но я привык так, если даю совет, то пытаюсь чтобы он подошел под любые условия (если эти условия не известны).
Рассмотрим такой массив:
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
)
)
)
[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
8. Ray Wen - 07 Февраля, 2005 - 03:36:47 - перейти к сообщению
TvoyWeb
Спасибо... по ссылкам полезная информация. Буду через serialize() ( unserialize(), данных не много и все находиться выше сервера...
Возможно не по теме, но все таки, раз начал... Я делаю некое подобие админки для добавления новостей разными админами сайта... пароли и имена храняться в массиве выше сервера. В достаточной ли они безопасности там, или лучьше применить дополнительные меры? С шифрованием данных и безопасностью пока не сталкивался... по тому дуб дубом в этом деле...
Спасибо... по ссылкам полезная информация. Буду через serialize() ( unserialize(), данных не много и все находиться выше сервера...
Возможно не по теме, но все таки, раз начал... Я делаю некое подобие админки для добавления новостей разными админами сайта... пароли и имена храняться в массиве выше сервера. В достаточной ли они безопасности там, или лучьше применить дополнительные меры? С шифрованием данных и безопасностью пока не сталкивался... по тому дуб дубом в этом деле...
9. ita - 07 Февраля, 2005 - 04:11:08 - перейти к сообщению
о serialize() не знал, это выход.
только что там с размером файла..
З.Ы. базы данных рулят
все и всегда находится в относительной безопастности по http конечно не дотянуться, но все равно пароли в открытом виде лучше не хранить.
пользуйся md5() или crypt()
только что там с размером файла..
З.Ы. базы данных рулят
все и всегда находится в относительной безопастности по http конечно не дотянуться, но все равно пароли в открытом виде лучше не хранить.
пользуйся md5() или crypt()
10. Ray Wen - 07 Февраля, 2005 - 04:51:22 - перейти к сообщению
ita
Почитал немного про шифрование... ни чего сложного, по тому действительно лучьше воспользоваться... надежнее. Спасибо.
Почитал немного про шифрование... ни чего сложного, по тому действительно лучьше воспользоваться... надежнее. Спасибо.