【问题标题】:Is possible, in PHP, serialize array in "human-readable language" and then unserialize it? [closed]是否可以在 PHP 中以“人类可读的语言”序列化数组然后反序列化它? [关闭]
【发布时间】:2012-11-12 15:51:28
【问题描述】:

我要求通过 PHP 脚本进行序列化和反序列化。只有有时我会手动编辑数组(在 database.txt 中)。

【问题讨论】:

  • PHP 具有序列化和反序列化功能,但它们不会以人类可读的语言为您提供输出,顺便说一句,哪些语言可以提供这样的功能

标签: php serialization deserialization store human-readable


【解决方案1】:

您可以将数组导出为 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))。

【讨论】:

  • 对于 OP:json_decode() 需要将第二个参数设置为 (bool) TRUE,否则数据将被解码为 PHP 对象而不是数组。就个人而言,我会先看看你的服务器是否安装了YAML,因为它更容易阅读 IMO。
【解决方案2】:

您应该看看 JSON 格式。根据您要序列化的数据类型,这应该可以满足您的需求,而且它非常易于阅读且易于编辑。

特别是,您的数组仅限于包含数字、字符串、浮点数、布尔值或其他数组。但是,您既可以存储数字索引数组,也可以存储关联数组。

有关标准的更多信息,请查看 http://www.json.org/,有关 php 函数,请参阅 http://us2.php.net/json_encode 和 http://us2.php.net/json_decode

【讨论】:

    猜你喜欢
    • 2017-12-10
    • 2010-09-19
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多