Перейти к содержимому

Как записать массив в файл php

  • автор:

Как записать массив в файл php

В PHP есть встроенная функция serialize , которая позволяет преобразовывать переменные в пригодный для хранения формат. Минус в том, что формат, в котором будет значение — чисто PHPшное. Т.е. это не универсальный способ хранения. Бывает, что нужно эти данные потом куда-то передать. Тогда можно воспользоваться преобразованием массива в json с помощью функции json_encode . Для записи в файл есть встроенная функция file_put_contents

 $data = [ 'user' => 'name', 'email' => 'feycot@gmail.com' ]; file_put_contents(__DIR__ . '/data.txt', serialize($data)); // a:2: file_put_contents(__DIR__ . '/data.json', json_encode($data)); // 

Как записать массив в файл (PHP)

Например необходимо записать массив array $array в файл array.txt , затем прочитать данные файла, восстановить и вывести на экран.

‘Номер один’, // Ключ: число; Значение: строка ‘two’ => 2, // Ключ: строка; Значение: число ‘three’ => ‘Это номер три’, // Ключ: строка; Значение: строка 4 => 4 // Ключ: число; Значение: число ); // еще одно значение добавим таким способом $array[] = ‘Супер значение’; // запишем массив в файл object2file($array, ‘array.txt’); // в файл array.txt будет записана следующая информация: // serialize $array // a:5: echo ‘

'; print_r(object_from_file('array.txt')); echo '

‘; ?>

Результат

После записи массив в файл и чтения информации из файла, на экране будет следующее:

Array ( [1] => Номер один [two] => 2 [three] => Это номер три [4] => 4 [5] => Супер значение )
✖ ❤ Мне помогла статья 7 оценок
37931 просмотр 2 комментария Артём Фёдоров 23 августа 2011

Категории

Читайте также

  • Умножить массив на число (PHP)
  • Получить последнее значение массива (PHP)
  • Получить первое значение массива (PHP)
  • Получить массив ключей (PHP)
  • Удалить пустые элементы из массива (PHP)
  • Ассоциативный массив в JavaScript
  • Заполнить массив случайными числами (PHP)
  • Преобразовать массив в объект (PHP)
  • Найти и удалить элемент массива (PHP)
  • Элементы массива в случайном порядке (PHP)
  • Как удалить элемент ассоциативного массива (JavaScript)
  • Массив уникальных значений (JavaScript)

Комментарии

Артём Фёдоров 01 апреля 2013 в 23:44

Как я понял в файл попадают данные с экранированными кавычками, и при получении остаются, то можно воспользоваться функцией stripslashes()

Ян Басюк 01 апреля 2013 в 00:06

А , если, к примеру, я поставил кавычки, то как избавится от дробей?

Написать комментарий
© Экспэнч 2010-2024
При полном или частичном копировании статей сайта указывайте пожалуйста ссылку на источник
Хотите узнать больше информации, пишите на: artem@expange.ru

Вход на сайт

Введите данные указанные при регистрации:

Социальные сети

Вы можете быстро войти через социальные сети:

Как записать PHP массив в файл и считать его из файла

@E_p, спасибо за дополнение. Выбор между serialize() и json_encode() зависит от многих факторов, но serialize() более роднее для PHP.

21 апр 2017 в 21:07

Если массив «большой», например, занимает в памяти 20M, и у PHP в конфиге стоит ограничение на объем используемой памяти, например, 32M, то промежуточная переменная $data может вызвать ошибку 500. Было бы интересно решение без $data.

– user239133
21 апр 2017 в 22:08

@Руслан, да, но перед этим нужно все равно сериализовать данные. От ситуации с файлом особо не отличается. Postgres или SQLite, по крайней мере, на уровне C API предоставляют что-то типа дескрипторов файлов для BLOB-полей.

Как записать массив в файл php

Прежде чем перейти к анонсированной теме пункта — важное :

Массив в файл можно сохранить в виде(type) строки(string). Поскольку массив не является строкой, а является типом array, то прежде чем записывать в файл, егомассив нужно превратить в строку.

Подробно запись/сохранение массива в файл построчно!

Данный пример работает только для одномерного массива — его и возьмем в качестве примера для сохранения в файл . нам понадобится:

Нам нужен пример одномерного массива, который будем записывать в файл присвоим его к переменной :

$new_array = array(‘кошка’,’собака’,’корова’,’курица’);

Для записи массив а в файл на понадобится функция file_put_contents

Но! Если мы создадим вот такую запись, как в обычной записи в файл, то у нас запишется не совсем так, как нам требуется.

file_put_contents(«example_array_in_file.dat» , $new_array);

А получим, что массив запишется все в кучу одной строки, специально сделал запись в файл именно таким образом! Вот, что у нас получилось : Пример 1 Это не совсем то, что нам нужно! Вернее совсем не то!

Нам нужно, чтобы последующая ячейка записывалась с новой строки! Как это вообще можно сделать!? Нам потребуется функция implode, и если мы сделаем из массива строку с переносом, то мы получим вот такую функцию в сборе для записи массива построчно:

file_put_contents(«example_array_in_file.dat» , implode(«\r\n», $new_array ));

Пример записанного массива построчно и сохраненного в файл:

И если сейчас мы посмотрим на тот же массив, который записан в файл, то мы увидим совершенно другую, интересную ситуацию:

Как восстановить оригинальный массив из сохраненного в файл?

Как вернуть записанный массив в файл, обратно в переменную!?

Как записать простой массив в файл в строку с разделителем!?

Следующий пример записи массива в файл также пригоден только для одномерного массива.

Этот вариант несколько отличается от выше приведенного.

Для записи массива с помощью разделителя нам потребуется:

Возьмем все тот же одномерный массив:

$new_array = array(‘кошка’,’собака’,’корова’,’курица’);

Вручную, конечно же, мы не будем ставить разделитель между ячейками, будем использовать снова функцию implode.

В качестве разделителя рекомендую использовать редкие знаки, которые никогда не будут повторяться в тексте, инче, при возврате строки в массив, вы получите не оригинальный массив. Рекомендую подбирать разделитель в таблице символов. Для примера используем разделить — знак умножения «*»:

file_put_contents(«example_array_in_file.dat» , implode(«*», $new_array ));

Пример записи массива в строку с разделителем:

Результат записи массива в строку: пример записи массива в строку с разделителем!

Как восстановить оригинальный массив из сохраненного в файл?

Как вернуть записанный массив в файл, обратно в переменную!?

Как записать любой массив в файл!?

Как уже выше было сказано, что нам нужно превратить массив в строку(для записи) и. существует функция, которая превращает строку в массив — serialize. Просто берем любой — абсолютно любой массив и превращаем его в строку, а уж записать строку в файл — это просто!

Сохраняем массив в файл:

Нам понадобится массив, но мы возьмем чуть посложнее массив например ассоциативный!

Как записать ассоциативный массив в файл!?

Для того, чтобы показать пример записи ассоциативного массива в файл нам потребуется ассоциативный массив, например такой:

«Иванов» => array («рост» => 174, «вес» => 68),

«Петров» => array («рост» => 181, «вес» => 90),

«Сидоров» => array («рост» => 166, «вес» => 73));

Далее нам нужно данный массив пропустить через функцию serialize, если мы прямо сейчас здесь выведем вот таким образом:

echo serialize $array_ass;

Ну далее напишем опять конструкцию для записи ассоциативного массива в файл :

«Иванов» => array («рост» => 174, «вес» => 68),

«Петров» => array («рост» => 181, «вес» => 90),

«Сидоров» => array («рост» => 166, «вес» => 73));

file_put_contents(«example_array_in_file_3.dat» , serialize ( $array_ass ));

Обратный процесс — unserialize

$декодированный_массив = unserialize(file_get_contents(‘example_array_in_file_3.dat’));//декодирование в массив

Как записать многомерный массив в файл!?

Берем любой многомерный массив, с любым количеством включений.

И поступаем аналогично! ВСЁ!ВСЁ! Одинаково, что мы делали в предыдущем пункте!

$многомерный_массив = array(array(array array array) array(array array array) array(array array array) ) ;

И ваш многомерный массив будет записан в файл!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *