Создать массив PHP, используя fopen с добавлением

У меня возникают проблемы с выяснением того, как записать в файл, используя режим добавления fopen "a".

Сам файл представляет собой простой массив PHP:

$array = array(
  "entry1"   => "blah blah",
  "entry2"   => "forbarbaz",
);   

достаточно просто. Поэтому использование fopen со вторым аргументом, установленным в "a", должно позволить мне добавить файл с помощью fputs.... проблема заключается в открытии и закрытии строк, т.е. $array = array( а также );

так что теперь файл должен выглядеть так:

  "entry1"   => "blah blah",
  "entry2"   => "forbarbaz",

Как бы я перестроить эти данные в рабочий массив PHP, предполагая, что это просто текстовый файл со списком записей без открывающей и закрывающей строк? Извините, если это не ясно, это немного сложно. Нет, я не собираюсь хранить эти значения в БД, мне нужно преимущество в скорости, держа эти конкретные значения в массиве файлов.

Таким образом, вопрос на самом деле заключается в том, как бы я мог построить пригодный для использования массив PHP из txt-файла с построчным списком, подобным этому?

Чтобы уточнить:

Как я могу получить в текстовом файле с такими строками:

  "entry1"   => "blah blah",
  "entry2"   => "forbarbaz",

и иметь работоспособный $php_array()????

4 ответа

Решение

Попробуй это.

Формат файла (в начале работы с ним):

<?php
$array = array();

Теперь это правильный php-файл.

Затем просто добавьте новые строки, как показано ниже:

$f = fopen('myarray.php', 'a');
fputs($f, PHP_EOL.'$array["entry1"] = "value1";');
fclose($f);

И используйте это просто include('myarray.php');

Может быть, вы ищете функцию fseek: http://se.php.net/fseek

При открытии файла в r+ В этом режиме указатель файла находится в начале файла. Похоже, вы хотите поместить его в конец файла минус несколько байтов, а затем записать свои новые данные.

Почему бы и нет json_encode массив, когда вы храните его в файле, а затем json_decode JSON в массив, когда вы извлекаете его из файла?

json_encode
json_decode

Непроверенные. Попробуй это:

$data = file_get_contents('./data.txt', true);
$array = eval("array(".$data.")");

К вашему сведению, решение shiplu.mokadd.im является самым простым.

Другие вопросы по тегам