我用PHP脚本来询问序列化和反序列化。只有有时我手动编辑数组(在database.txt中)。在PHP中,可能以“人类可读语言”序列化数组,然后反序列化它?
-1
A
回答
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 ---^
注意,这一切可能不是最好的主意(我有点担心你选择的文件名 - 如果你想有一个数据库,然后使用DB(例如sqlite的)!)。
+0
对于OP:'json_decode()'需要将第二个参数设置为(bool)TRUE,否则数据将被解码为一个PHP对象而不是数组。就我个人而言,我会看看你的服务器是否首先安装了[YAML](http://www.php.net/manual/en/book.yaml.php),因为它稍微容易阅读IMO。 –
1
你应该看看JSON格式。根据你正在序列化的数据类型,这应该做你想做的事情,而且它非常易读,并且很容易编辑。
特别是,您的数组仅限于包含数字,字符串,浮点数,布尔值或其他数组。但是,您可以存储数字索引以及关联数组。
有关标准的详细信息,看看http://www.json.org/和PHP函数,见http://us2.php.net/json_encode和http://us2.php.net/json_decode
相关问题
- 1. 序列化/反序列化PHP数组
- 2. PHP /反序列化 - 是否可以反序列化$ _GET值?
- 3. Java反序列化Arrays.toString() - 人类可读的序列化 - 配置文件
- 4. 以不同语言反序列化
- 5. GemFire:在Java中序列化对象,然后在c#中反序列化它们#
- 6. DataServiceContext在序列化/反序列化往返后不可用
- 7. PHP反序列化序列化数据
- 8. 在SQL中反序列化PHP数组
- 9. 在Coldfusion中反序列化PHP数组
- 10. 我可以序列化一个hibernate会话,然后反序列化它以获取会话对象吗?
- 11. 序列化/反序列化int数组以字符数组
- 12. 反序列化:需要调试到屏幕,人类可读
- 13. 如何反序列化具有可序列化对象数组的类
- 14. 只读(不可变)可序列化类
- 15. Silverlight的序列化/反序列化可能吗?
- 16. 序列化/反序列化的可能性
- 17. 反序列化泛型(但可序列化)类型
- 18. 可以Json.NET序列化/反序列化到/从一个流?
- 19. 可序列化类
- 20. 是否可以序列化QSettings然后恢复它们?
- 21. 反序列化数组中的cookie PHP
- 22. 如何序列化URL并使其在PHP中仍然可读?
- 23. JS反序列化一个PHP序列化数组
- 24. Php反序列化序列化的数组
- 25. PHP序列化/反序列化错误
- 26. PHP序列化和反序列化
- 27. 以人类可读的文本格式序列化
- 28. 序列化,然后反序列化的MySQL结果对象
- 29. 反序列化到反序列化类中的列表中?
- 30. 序列化/反序列化派生类
PHP拥有序列化和反序列化功能,但他们不给你输出人类可读的语言,顺便说一句这语言给它如此 –