「请看完教程再尝试。有两种方法哦。」
你希望把PHP的多维数组存进数据库或文件里吗?
你用过什么方法来实现这个功能呢?
你觉得它们复杂吗?兼容性好吗?或者,你正在寻找一种万能的方法,可以把PHP中所有类型的数据都保存进文件里。
在javascript,我们通过JSON来实现这个功能,它可以把一个javascript对象转换成普通的字符串,而且可以在任何地方完整地还原它们。这样我们便可以方便地在网络间传送对象,而不用管它是什么类型的,数字、字符串,甚至多维数组,都可以。
php也支持json,通过 json_encode(数据) 后,我们就可以把多维数组存文件或数据库里了。
用 json_decode(JSON字符串,true) 还原数组
只是,JSON的中文编码效率实在是……每一个UTF-8中文都会变成这样:\u2b\u3d\u5f,数数,12字节!!
3:12=1:4的空间占用率,我们绝对不能接受!还有更好的方法吗?
一次,我在翻PHP手册时,发现了serialize()函数,它的说明是这样写的:
http://cn.php.net/zh/serialize(如果正文不是中文,那么你很可能有RP问题。让php.net变中文的方法就是在地址中适当的地方加zh/)
serialize是PHP的核心库函数,效率相当高。而且它不会对你的数据(包括二进制数据)进行任何编码。这使得使用serialize处理后保存的数据比原始数据根本大不了多少。而且,它优秀的数据结构使它可以快速被unserialize()函数还原。而且你完全不用担心还原后的数据与之前的数据不一样。
除了文件句柄、数据库连接等“资源类型”,它几乎可以保存PHP中所有类型的数据!怎么样,还在用explode苦苦分割数据的你,怎么不赶快使用serialize呢??
它的中文名字,叫“数据串行化”。