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