优秀的手机游戏下载!
首页 serialize的用法?

serialize的用法?

发布时间:2024-08-10 11:38:50 编辑:打包星星 浏览:614

序列化 类似 json 功能,比如有个 数组$a 100个元素 ,需要存储起来 供别的进程使用,就可以$b=serialize($a)并将$b写入文件ff.txt, 其他进程 需要取的时候 就 $a=unserialize( file_get_contents( ff.txt) ) ,$a 就是原来那100个元素的数组,这个对 对象一样可用

请教使用jQuery中serialize函数

具我所知:

serialize 是jquery ajax里面的一个方法吧。

serialize() 方法通过序列化表单值,创建 URL 编码文本字符串。

您可以选择一个或多个表单元素(比如 input 及/或 文本框),或者 form 元素本身。

序列化的值可在生成 AJAX 请求时用于 URL 查询字符串中

简单分析PHP中序列化用法介绍

一、详细说明

1、.serialize() 方法创建以标准 URL 编码表示的文本字符串。它的操作对象是代表表单元素集合的 jQuery 对象。

2、.serialize() 方法可以操作已选取个别表单元素的 jQuery 对象,比如 &ltinput&gt, &lttextarea&gt以及 &ltselect&gt。不过,选择 &ltform&gt标签本身进行序列化一般更容易些

3、只会将”成功的控件“序列化为字符串。如果不使用按钮来提交表单,则不对提交按钮的值序列化。如果要表单元素的值包含到序列字符串中,元素必须使用 name 属性。

4、form里面的name不能够用 Js、jquery里的关键字。

PHP序列化数据存储在数据库中使用json还是serialize好

简单分析PHP中序列化用法介绍

序列化在我们学习php中都会有用到了对于序列化我们常用的函数有serialize和unserialize了,希望以下这篇文章能够帮助到各位了解到PHP中序列化用法,具体如下:

0x00 序列化函数

serialize():返回带有变量类型和值的字符串

unserialize():想要将已序列化的字符串变回 PHP 的值

测试代码:

&lt?php

class test{

var $a

var $b

function __construct($a,$b,$c){

$a = $a

$this-&gtb = $b

}

}

class test1 extends test{

function __construct($a){

$this-&gta = $a

}

}

$a = ’hello’

$b = 123

$c = false

$d = new test(’helloa’,’hellob’,’helloc’)

$e = new test1(’hello’)

var_dump(serialize($a))

var_dump(serialize($b))

var_dump(serialize($c))

var_dump(serialize($d))

var_dump(serialize($e))

?&gt

运行结果:

string ’s:5:”hello”’ (length=12)

string ’i:123’ (length=6)

string ’b:0’ (length=4)

string ’O:4:”test”:2:{s:1:”a”Ns:1:”b”s:6:”hellob”}’ (length=46)

string ’O:5:”test1”:2:{s:1:”a”s:5:”hello”s:1:”b”N}’ (length=46)

序列化字符串格式: 变量类型:变量长度:变量内容 。

如果序列化的是一个对象,序列化字符串格式为:

变量类型:类名长度:类名:属性数量:{属性类型:属性名长度:属性名;属性值类型:属性值长度:属性值内容}

将上述结果反序列化输出,执行结果:

string ’hello’ (length=5)

int 123

boolean false

object(test)[1]

public ’a’ =&gtnull

public ’b’ =&gtstring ’hellob’ (length=6)

object(test1)[1]

public ’a’ =&gtstring ’hello’ (length=5)

public ’b’ =&gtnull

0x01 对象序列化

当序列化对象时,PHP 将在序列动作之前调用该对象的成员函数 sleep()。这样就允许对象在被序列化之前做任何清除操作。类似的,当使用 unserialize() 恢复对象时, 将调用 wakeup()成员函数。

在serialize()函数执行时,会先检查类中是否定义了 sleep()函数,如果存在,则首先调用 sleep()函数,如果不存在,就保留序列字符串中的所有属性。

在unserialize()函数执行时,会先检查是否定义了 wakeup()函数。如果 wakeup()存在,将执行__wakeup()函数,会使变量被重新赋值。

serialize()测试代码:

&lt?php

class test{

var $a

var $b

function __construct($a,$b,$c){

$this-&gta = $a

serialize的用法?

$this-&gtb = $b

}

function __sleep(){

echo ”b has changed”.”\n”

$this-&gtb = ’hib’

return $this-&gtb

}

function __wakeup(){

echo ”a has changed”.”\n”

$this-&gta = ’hia’

}

}

class test1 extends test{

function __construct($a){

$this-&gta = $a

}

}

$d = new test(’helloa’,’hellob’,’helloc’)

$e = new test1(’hello’)

serialize($d)

serialize($e)

var_dump($d)

var_dump($e)

?&gt

执行结果:

b has changed b has changed

object(test)[1]

public ’a’ =&gtstring ’helloa’ (length=6)

public ’b’ =&gtstring ’hib’ (length=3)

object(test1)[2]

public ’a’ =&gtstring ’hello’ (length=5)

public ’b’ =&gtstring ’hib’ (length=3)

unserialize()测试代码:

class test{

var $a

var $b

function __construct($a,$b,$c){

$this-&gta = $a

$this-&gtb = $b

}

function __sleep(){

echo ”b has changed”.”\n”

$this-&gtb = ’hib’

return $this-&gtb

}

function __wakeup(){

echo ”a has changed”.”\n”

$this-&gta = ’hia’

}

}

class test1 extends test{

function __construct($a){

$this-&gta = $a

}

}

$d = ’O:4:”test”:2:{s:1:”a”Ns:1:”b”s:6:”hellob”}’

1) 空间的比较

serialize在编码后大概是json的1.5倍。

原因:

serialize后字符串包含了子串的长度,这可能是速度方面的优化,但是测试结果不尽人意。

serialize有更加详细的类型区分,而json只有四种类型,并且是以简单的符号表示。

2)速度的比较

在较小数据的情况下, serialize比json快数量级。

在大数据量的情况下,json比serialize稍微差一点

3)处理对象

json无法处理对象方法等数据。

4)使用范围

在前后端交互一般都使用JSON,另外,目前JSON只支持UTF-8编码的数据。

序列化使用serialize,特别是对象的存储。这是其存在的意义。

与对象无关的数据存储可以使用json,如包含大量数字的数组等。

这篇博客概括满全面:http://blog.csdn.net/hguisu/article/details/7651730

以上就是关于serialize的用法?全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

更多相关资讯

序列化 类似 json 功能,比如有个 数组$a 100个元素 ,需要存储起来 供别的进程使用,就可以$b=serialize($a)并将$b写入文件ff.tx…
查看详情
序列化 类似 json 功能,比如有个 数组$a 100个元素 ,需要存储起来 供别的进程使用,就可以$b=serialize($a)并将$b写入文件ff.tx…
查看详情
序列化 类似 json 功能,比如有个 数组$a 100个元素 ,需要存储起来 供别的进程使用,就可以$b=serialize($a)并将$b写入文件ff.tx…
查看详情
相关资讯
猜你喜欢