【发布时间】:2012-11-12 15:51:28
【问题描述】:
我要求通过 PHP 脚本进行序列化和反序列化。只有有时我会手动编辑数组(在 database.txt 中)。
【问题讨论】:
-
PHP 具有序列化和反序列化功能,但它们不会以人类可读的语言为您提供输出,顺便说一句,哪些语言可以提供这样的功能
标签: php serialization deserialization store human-readable
我要求通过 PHP 脚本进行序列化和反序列化。只有有时我会手动编辑数组(在 database.txt 中)。
【问题讨论】:
标签: php serialization deserialization store human-readable
您可以将数组导出为 JSON(JavaScript 对象表示法)字符串,然后再对其进行解码。
您可以分别使用函数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_decode() 需要将第二个参数设置为 (bool) TRUE,否则数据将被解码为 PHP 对象而不是数组。就个人而言,我会先看看你的服务器是否安装了YAML,因为它更容易阅读 IMO。
您应该看看 JSON 格式。根据您要序列化的数据类型,这应该可以满足您的需求,而且它非常易于阅读且易于编辑。
特别是,您的数组仅限于包含数字、字符串、浮点数、布尔值或其他数组。但是,您既可以存储数字索引数组,也可以存储关联数组。
有关标准的更多信息,请查看 http://www.json.org/,有关 php 函数,请参阅 http://us2.php.net/json_encode 和 http://us2.php.net/json_decode
【讨论】: