PHP 的 serialize() 函数有什么用?

2022-08-30 13:58:54

我刚刚了解了 和 函数。这有什么用?我知道人们将事情序列化以放入数据库中。你能给我一些有用的例子吗?serialize()unserialize()

我还在javascript中看到序列化代码,这是一样的吗?JavaScript中的序列化字符串可以用php取消序列化吗?unserialize()


答案 1

PHP 序列化允许您以文本形式保留数组或对象。当将数组分配给像$_SESSION这样的东西时,它允许PHP将其存储在文本文件中,然后稍后重新创建它。序列化像这样用于对象和变量。(只需确保事先声明了对象使用的类)

另一方面,Wordpress将其用于非常相似的方法,方法是将序列化数组直接存储在数据库中。如果您保留键 = > 值的数据库,这可能是非常有益的,因为数组的灵活性,您可以在 value 参数中存储任何内容。

这是链接(由第一位评论者提供):http://us3.php.net/serialize


答案 2

我经常在数据库中看到血清化的数据存储,我真的不喜欢这样:

  • 在SQL中使用这些数据真的很难:你如何在序列化数据上编写条件?更难:你如何更新它?你真的写了一个PHP脚本来获取每一行,取消序列化它们,修改它们,重新序列化,并将它们存储回数据库中吗?:-(
  • 当您想要将数据迁移到另一个软件的那一天,迁移数据将需要更多的工作(顺便说一句,如果新软件不是用PHP编写的,则需要更多的工作)

不过,我承认这是一种存储定义不明确的数据的简单方法......我有时确实用它来做...

序列化的另一个用途是促进两个系统之间的数据交换:例如,通过某种Web服务发送对象需要它们以某种方式序列化。

如果这两个系统是PHP,你可以设想使用/。但是,在这里,如果其中一个系统不再是PHP怎么办?使用JSON或SOAP可能是一个更好的选择:起初有点困难,但可能是一个更长期的解决方案,因为这些格式在其他语言中也是已知的。serializeunserialize

我使用PHP函数的一件事是将数据存储在缓存中(如APC的用户缓存),在PHP应用程序中:您无法按原样存储对象:您必须序列化它们。由于缓存仅由一个应用程序使用,因此不必使用许多语言已知的格式 ;所以,序列化是可以的...而且,要将数据存储在缓存中,您应该使用非常快的序列化函数 - 并且序列化非常快^^serialize


推荐