Возможно ли в PHP сериализовать массив в "читаемый человеком язык" и затем десериализовать его?

Прошу сериализацию и десериализацию с помощью PHP-скрипта. Только иногда я редактирую массив вручную (в database.txt).

2 ответа

Решение

Вы можете экспортировать массив в виде строки JSON (JavaScript Object Notation), а затем снова декодировать его.

Вы можете сделать это с помощью функций json_encode а также json_decode соответственно.

$a = array(
  'a' => 1,
  'b' => 2,
  'c' => array(1,2,3));
file_put_contents('database.txt', json_encode($a));
// encoded: {a:1,b:2,c:[1,2,3]}

// ---
$a = json_decode(file_get_contents('database.txt'), TRUE);
// specify TRUE to parse objects as assoc. arrays ---^

Обратите внимание, что все это может быть не самой лучшей идеей (меня немного беспокоит имя файла, которое вы выбрали - если вы хотите иметь БД, то используйте БД! (Например, sqlite)).

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

В частности, ваш массив может содержать только числа, строки, числа с плавающей запятой, логические значения или другие массивы. Однако вы можете хранить как числовые, так и ассоциативные массивы.

Для получения дополнительной информации о стандарте, посмотрите на http://www.json.org/ и на функции php, смотрите http://us2.php.net/json_encode и http://us2.php.net/json_decode

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