Создать массив 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 в массив, когда вы извлекаете его из файла?
Непроверенные. Попробуй это:
$data = file_get_contents('./data.txt', true);
$array = eval("array(".$data.")");
К вашему сведению, решение shiplu.mokadd.im является самым простым.