【发布时间】:2010-11-13 21:57:58
【问题描述】:
我刚刚了解了serialize() 和unserialize() 函数。这有什么用途?我知道人们将事物序列化以放入数据库。你能给我一些有用的例子吗?
我也看到 javascript 中的序列化代码,是一样的吗? javascript中的序列化字符串可以用phpunserialize()反序列化吗?
【问题讨论】:
标签: php serialization
我刚刚了解了serialize() 和unserialize() 函数。这有什么用途?我知道人们将事物序列化以放入数据库。你能给我一些有用的例子吗?
我也看到 javascript 中的序列化代码,是一样的吗? javascript中的序列化字符串可以用phpunserialize()反序列化吗?
【问题讨论】:
标签: php serialization
PHP 序列化允许您以文本形式保存数组或对象。将数组分配给 $_SESSION 之类的东西时,它允许 PHP 将其存储在文本文件中,然后再重新创建它。序列化像这样用于对象和变量。 (只要确保你事先声明了对象使用的类)
另一方面,Wordpress 将其用于非常相似的方法,将序列化的数组直接存储在数据库中。如果您保留一个键 => 值的数据库,由于数组的灵活性,这可能非常有益,您可以在 value 参数中存储任何内容。
这是链接(由第一位评论者提供):http://us3.php.net/serialize
【讨论】:
我经常在数据库中看到序列化的数据存储,我真的不喜欢这样:
不过,我承认这是一种存储未明确定义的数据的简单方法...而且我有时确实会使用它...
序列化的另一个用途是促进两个系统之间的数据交换:例如,通过某种 web 服务发送对象,要求它们以某种方式序列化。
如果两个系统都是 PHP,你可以设想使用serialize/unserialize。但是,在这里,如果其中一个系统不再是 PHP 怎么办?使用 JSON 或 SOAP 可能是更好的选择:一开始会有点困难,但可能是更长期的解决方案,因为这些格式在其他语言中也是已知的。
我使用 PHP 的 serialize 函数的一件事是将数据存储在缓存中(就像 APC 的用户缓存),在 PHP 应用程序中:您不能按原样存储对象:您必须序列化它们.由于缓存仅由一个应用程序使用,因此不必使用多种语言都知道的格式;所以,序列化是可以的......而且,要将数据存储在缓存中,你应该使用一个非常快速的序列化函数 - 序列化非常快^^
【讨论】:
我经常使用serialize 将重要信息存储在数据库中,这些信息不值得为其创建一个全新的字段,但将来可能会用到。
例如,如果用户填写了一个我只存储了其中几个元素的表单,但我想保留它们以备不时之需,我将序列化表单元素数组并将其存储在数据库。
【讨论】:
【讨论】: