Автор Тема: большой массив в отдельном файле  (Прочитано 4213 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Jeka

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Чтобы не плодить новых веток, хотелось бы поднять эту старую...

Мой вопрос: если большой массив хранится в отдельном файле, как его проинициализировать в скрипте, т.е. занести в переменную, чтобы в дальнейшем из этого скрипта можно было работать с этим массивом?
Можно конечно в файле заключить содержимое массива в , а в скрипте использовать include(\'massiv.dat\'); а если по-другому, то как?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
большой массив в отдельном файле
« Ответ #1 : 05 Июля 2004, 01:32:27 »
не надо поднимать ископаемые ветки.
а открывать новые темы совсем не так страшно, как тебе кажется.

вариантов хранить массив в файле - масса.
что у тебя за массив и что в нем лежит?

Оффлайн Jeka

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
большой массив в отдельном файле
« Ответ #2 : 05 Июля 2004, 19:32:54 »
Лежит двухмерный массив. Записываю каждую новую строчку в конец файла, завершаю символом конца строки, например вот так:

$result="\\$arr[]=array(1=>\'$name\',2=>\'$url\',3=>\'$mail\',4=>\'$menu\',5=>\'$descr\');\\n";
fwrite($f,$result);


то есть в файле получается массив:
$arr[]=array(1=>\'текст1\',2=>\'текст2\',3=>\'текст3\',4=>\'текст4\',5=>\'текст5\');
$arr[]=array(1=>\'текст1\',2=>\'текст2\',3=>\'текст3\',4=>\'текст4\',5=>\'текст5\');
$arr[]=array(1=>\'текст1\',2=>\'текст2\',3=>\'текст3\',4=>\'текст4\',5=>\'текст5\');


Сделал как знал... Говорят, что при записи нужно использовать serialize, но когда записывал то же с помощью fwrite($f,serialize($result)), все записывалось в одну длинную строчку, а если массив большой...
Посоветуйте как хранить такой массив в отдельном файле правильно и как потом его читать.
PS я испотльзовал для чтения из файла обычный include, а в файле первые 2 символа ставил

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
большой массив в отдельном файле
« Ответ #3 : 05 Июля 2004, 20:19:23 »
по-другому будет так:
записываешь
$result="$name|$ur|$mail|$menu|$descr\\n";
заменяя, естеественно, в данных \\r, \\n и | на что-нибудь другое

читаешь -
$arr=file(\'filename.ext\');

в массиве $arr у тебя строки.
массив из каждой строки можно получить, через explode("|",#arr[$i])

это самый, что ни на есть, стандартный способ.

Оффлайн Jeka

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
большой массив в отдельном файле
« Ответ #4 : 05 Июля 2004, 20:45:39 »
Спасибо!
PS а так. как я сделал приемлемо или никуда не годится?
И если выбирать между 3мя способами - моим, тем, что вы написали и сериализацией,у какого будет преимущество? В моем вроде функций ресурсоемких не используется, может будет быстрее работать, но может есть другие недостатки?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
большой массив в отдельном файле
« Ответ #5 : 05 Июля 2004, 23:49:22 »
есть.
все-таки, не стоит исполнять данные.
у теб полуается КОД, а на самом деле - это ДАННЫЕ
а их лучше не смешивать

лучше всего мой.
хотя бы потому, что
1. так делают в подавляющем большинстве случаев.
2. решение масштабирвемое - можно читать не весь файл.
3. можно сделать поиск, к примеру

Оффлайн Jeka

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
большой массив в отдельном файле
« Ответ #6 : 06 Июля 2004, 19:22:34 »
я понял, спасибо за совет!

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28