Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сохранение массива в файл
 
 автор: LO   (27.01.2006 в 15:26)   письмо автору
 
 

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

   
 
 автор: XPraptor   (27.01.2006 в 15:28)   письмо автору
 
   для: LO   (27.01.2006 в 15:26)
 

Сессии тоже многомерные и безразмерные :-)))
Пишите сразу в сессии, но учитывайте, что если поьзователь закроет все страницы обозревателя, и при отключенных куках, то массив нужно создать заново.

   
 
 автор: LO   (27.01.2006 в 15:31)   письмо автору
 
   для: XPraptor   (27.01.2006 в 15:28)
 

Нет, мне этот вариант не подходит, содержание массива очень редко меняется, а размер его очень большой. Я думала, что нужно сохранить его в файл, при расскрытии его всего, что-то вроде того, что делает функция print_r, но она только выводит массив на печать.

   
 
 автор: XPraptor   (27.01.2006 в 15:33)   письмо автору
 
   для: LO   (27.01.2006 в 15:31)
 

А какой смысл в файл сохранять? Его же придется считывать из файла постоянно, формировать наверное быстрее будет.
А почему не подходят сессии? Я же говорю б-е-з-р-а-з-м-е-р-н-ы-е.

   
 
 автор: LO   (27.01.2006 в 15:53)   письмо автору
 
   для: XPraptor   (27.01.2006 в 15:33)
 

Хорошо, я создаю сессию

$my_array = my_function();
    $HTTP_SESSION_VARS['array'] = $my_array
;
Потом обращаюсь к массиву как

$mass = $HTTP_SESSION_VARS['array'];

и дальше работаю с массивом $mass так, как работала бы с массивом $my_array
Но я не могу работать с ним нет значений. Что я делаю не так?
функция print_r() выводит просто
Array ( ) 

   
 
 автор: XPraptor   (27.01.2006 в 16:11)   письмо автору
 
   для: LO   (27.01.2006 в 15:53)
 

В принципе, вы все верно указали. Единственное, не обязательно пользоваться уставревшей конструкцией $HTTP_SESSION_VARS['array'].
Используйте $_SESSION['не нужно называть array переменную']=$my_array;
На счет print_r не уверен, но вывод вам показал, что данные все же есть. Их можно использовать, хоть циклом перебрать весь массив хоть обратиться сразу по имени и индексу.

   
 
 автор: chrom   (27.01.2006 в 16:12)   письмо автору
 
   для: LO   (27.01.2006 в 15:31)
 

сохранять в таблицу MySQL пробовал? одно поле - под значения, и n полей под размерности...

   
 
 автор: LO   (27.01.2006 в 16:26)   письмо автору
 
   для: chrom   (27.01.2006 в 16:12)
 

Данные я и беру из БД, а массив все же пустой.
Но я другим способом пошла. Я все же сохранила массив в файл "val_of_array.php"? в котором и содержится этот массив в виде:

<?php $my_array =   array(
    
"name" =>
    array(
      
"XXX""YYY"    
    
),
    
"code" =>
    array(
      
"111""222"
    
),
...
  )
?>
. Потом где я использую этот массив, я просто инклудю этот файл и работаю с массивом $my_array и не надо для каждого пользователя создавать сессию

   
 
 автор: chrom   (27.01.2006 в 16:30)   письмо автору
 
   для: LO   (27.01.2006 в 16:26)
 

если у тебя данные уже содержатса в БД, тогда вообще не понятно зачем тебе все это в файл загонять...

   
 
 автор: LO   (27.01.2006 в 16:32)   письмо автору
 
   для: chrom   (27.01.2006 в 16:30)
 

потому, что у меня за основу берутся данные из БД, но над ними проводится, еще куча работы

   
 
 автор: chrom   (27.01.2006 в 16:36)   письмо автору
 
   для: LO   (27.01.2006 в 16:32)
 

сохраняй результаты работы в таблицу/временную таблицу...

   
 
 автор: Timofey   (27.01.2006 в 17:37)   письмо автору
 
   для: LO   (27.01.2006 в 15:26)
 

А если использовать "упаковку" массива в строку - serialize(), и потом ее записывать в файл?
У себя я попробовал применить такое сохранения массива в файл. Правда пока не знаю, как все это покажет себя в работе с крупными массивами.

   
 
 автор: cheops   (27.01.2006 в 21:40)   письмо автору
 
   для: LO   (27.01.2006 в 15:26)
 

Упакуйте массив в строку, при помощи функции serialize(), подробнее можно почитать в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=907.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования