php函数serialize()与unserialize()用法实例

本文实例讲述了php函数serialize()与unserialize()用法。分享给大家供大家参考。具体方法如下:

该实例主要讲述了php函数serialize()与unserialize()说明及案例。想要将已序列化的字符串变回 PHP 的值,可使用unserialize()。serialize()可处理除了resource之外的任何类型。甚至可以serialize()那些包含了指向其自身引用的数组。你正serialize()的数组/对象中的引用也将被存储。

serialize()返回字符串,此字符串包含了表示value的字节流,可以存储于任何地方。这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。

想要将已序列化的字符串变回 PHP 的值,可使用unserialize()。serialize()可处理除了resource之外的任何类型。甚至可以serialize()那些包含了指向其自身引用的数组。你正serialize()的数组/对象中的引用也将被存储。

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

注:在 PHP 3 中,对象属性将被序列化,但是方法则会丢失。PHP 4 打破了此限制,可以同时存储属性和方法。请参见类与对象中的序列化对象部分获取更多信息。
serialize()和unserialize()在php手册上的解释是:

serialize — Generates a storable representation of a value
serialize — 产生一个可存储的值的表示
unserialize — Creates a PHP value from a stored representation
unserialize — 从已存储的表示中创建 PHP 的值
serialize,翻译过来叫“连载, 使连续”,通常称它为“序列化”

这个函数很好用,特别是和unserialize一起配合使用
我觉得比较有用的地方就是将数据存入数据库或记录在文件中的时候
当然这种数据必须是比较复杂的(不复杂也不需要serialize了,我觉得起码得是一个一数组),而且是数据库中的非“索引或主键”,当然最好这个数据库字段在系统中和任何搜索程序无关,当然serialize后的数据其实还是能够搜索的,因为具体的数据并没有被加密或改变

代码如下:

<?php
//简单一点的
$array = array();
$array['key'] = 'website';
$array['value']='www.isoji.org';
$a = serialize($array);
echo $a;
unset($array);
$a = unserialize($a);
print_r($a);

//声明一个类
class dog {
var $name;
var $age;
var $owner;
function dog($in_name="unnamed",$in_age="0",$in_owner="unknown") {
$this->name = $in_name;
$this->age = $in_age;
$this->owner = $in_owner;
}
function getage() {
return ($this->age * 365);
}

function getowner() {
return ($this->owner);
}

function getname() {
return ($this->name);
}
}
//实例化这个类
$ourfirstdog = new dog("Rover",12,"Lisa and Graham");
//用serialize 函数将这个实例转化为一个序列化的字符串
$dogdisc = serialize($ourfirstdog);
print $dogdisc; //$ourfirstdog 已经序列化为字符串 O:3:"dog":3:{s:4:"name";s:5:"Rover";s:3:"age";i:12;s:5:"owner";s:15:"Lisa and Graham";}
print '<BR>';
/*
在这里你可以将字符串 $dogdisc 存储到任何地方如 session,cookie,数据库,php文件
*/
//我们在此注销这个类
unset($ourfirstdog);
/* 还原操作 */
/*
在这里将字符串 $dogdisc 从你存储的地方读出来如 session,cookie,数据库,php文件
*/

//我们在这里用 unserialize() 还原已经序列化的对象
$pet = unserialize($dogdisc); //此时的 $pet 已经是前面的 $ourfirstdog 对象了
//获得年龄和名字属性
$old = $pet->getage();
$name = $pet->getname();
//这个类此时无需实例化可以继续使用,而且属性和值都是保持在序列化之前的状态
print "Our first dog is called $name and is $old days old<br>";
print '<BR>';
?>

希望本文所述对大家的PHP程序设计有所帮助。

(0)

相关推荐

  • 详解php中serialize()和unserialize()函数

    php的serialize()函数和unserialize()函数 适用情境:serialize()返回字符串,此字符串包含了表示value的字节流,可以存储于任何地方.这有利于存储或传递 PHP 的值,同时不丢失其类型和结构.比较有用的地方就是将数据存入数据库或记录在文件中的时候 serialize()可处理处资源类型外所有的类型,也可以序列化对象 <?php $array = array(); $array['keys'] = 'www'; $array['values']='11111';

  • 浅谈php函数serialize()与unserialize()的使用方法

    php函数serialize(): 这个函数作用就是序列化数据,返回一个可存储的字符串,该函数有利于存储或传递PHP的值,同时不丢失其类型和结构.所以我们在cms数据库里面经常看到这样的结构. 一般,我们将复杂或者数据量多而没有必要分开存储的数据封装成一个多维数组通过serialize()转成字符串,然后存进数据库,需要的时候再拿出来转成数组再用,而拿出了转成数组用的就是php的unserialize(),前面多了一个un嘛.直接上例子: $a=array("周","满&qu

  • 非常好用的两个PHP函数 serialize()和unserialize()

    今天,在做一个关于PING服务的东西,由于不想把ping服务地址放进数据库中,那样不好,ping服务本来不是一个效率不高的事,再放进数据库中,不但更加降低了程序的效率,还给服务器带来不必要的损耗,所以,想办法所ping服务地址用数组的方式放进了.conf文件中,才开始的设计思路是通过生成的php代码放到.php文件中,然后再把.php文件载入进来,后来,发现操作起来不太方便,所以,决定使用serialize()函数和unserialize()函数,这两个函数的用法真是绝配,一个是进行序列化存储,

  • 浅谈php serialize()与unserialize()的用法

    serialize()和unserialize()在php手册上的解释是:serialize - Generates a storable representation of a valueserialize - 产生一个可存储的值的表示unserialize - Creates a PHP value from a stored representationunserialize - 从已存储的表示中创建 PHP 的值很显然,"a stored representation"的解释翻

  • php serialize()与unserialize() 不完全研究

    serialize()和unserialize()在php手册上的解释是: serialize - Generates a storable representation of a value serialize - 产生一个可存储的值的表示 unserialize - Creates a PHP value from a stored representation unserialize - 从已存储的表示中创建 PHP 的值 很显然,"a stored representation"

  • php中magic_quotes_gpc对unserialize的影响分析

    本文实例分析了php中magic_quotes_gpc对unserialize的影响.分享给大家供大家参考.具体如下: magic_quotes_gpc是一个php中一个给单双引号增加一些安全过滤的函数,但此函数对于我们使用unserialize函数时会产生一些影响,下面我们就这个问题与大家看几个实例与解决办法. 昨天朋友让我帮他解决下他网站的购物车程序的问题,程序用的是PHPCMS,换空间前是好的,刚换的空间,具体问题是提示成功加入购物车后跳转到购物车页面,购物车里为空. 我看了下代码,大致的

  • php中unserialize返回false的解决方法

    本文实例讲述了php中unserialize返回false的解决方法,分享给大家供大家参考.具体方法如下: php 提供serialize(序列化) 与unserialize(反序列化)方法. 使用serialize序列化后,再使用unserialize反序列化就可以获取原来的数据. 先来看看如下程序实例: <?php $arr = array( 'name' => 'fdipzone', 'gender' => 'male' ); $str = serialize($arr); //序

  • PHP中json_encode、json_decode与serialize、unserialize的性能测试分析

    于是便联想到PHP中的对象怎么样序列化存储性价比最高呢?接着想到了之前同事推荐的JSON编码和解码函数. 据他所说,json_encode和json_decode比内置的serialize和unserialize函数要高效. 于是我决定动手实验,证实一下同事所说的情况是否属实. 实验分别在PHP 5.2.13和PHP 5.3.2环境下进行. 用同一个变量,分别用以上方式进行编码或解码10000次,并得出每个函数执行10000次所需的时间. 以下是PHP 5.2.13环境其中一次测试结果: 复制代

  • php序列化函数serialize() 和 unserialize() 与原生函数对比

    php中有格式化字符串并转换成数组或对象的好方法,即序列化处理. 有两种序列化变量的方法. 以下示例,使用 serialize() 和 unserialize() 函数: // a complex array $myvar = array( 'hello', 42, array(1,'two'), 'apple' ); // convert to a string $string = serialize($myvar); echo $string; /* prints a:4:{i:0;s:5:

  • php函数serialize()与unserialize()用法实例

    本文实例讲述了php函数serialize()与unserialize()用法.分享给大家供大家参考.具体方法如下: 该实例主要讲述了php函数serialize()与unserialize()说明及案例.想要将已序列化的字符串变回 PHP 的值,可使用unserialize().serialize()可处理除了resource之外的任何类型.甚至可以serialize()那些包含了指向其自身引用的数组.你正serialize()的数组/对象中的引用也将被存储. serialize()返回字符串

  • JavaScript函数节流概念与用法实例详解

    本文实例讲述了JavaScript函数节流概念与用法.分享给大家供大家参考,具体如下: 最近在做网页的时候有个需求,就是浏览器窗口改变的时候需要改一些页面元素大小,于是乎很自然的想到了window的resize事件,于是乎我是这么写的 <!DOCTYPE html> <html> <head> <title>Throttle</title> </head> <body> <script type="text

  • PHP匿名函数和use子句用法实例

    本文实例讲述了PHP匿名函数和use子句用法.分享给大家供大家参考,具体如下: 下面方法输出的是hello world $param1和$param2是闭包变量 function test() { $param2 = 'every'; // 返回一个匿名函数 return function ($param1) use ($param2) { // use子句 让匿名函数使用其作用域的变量 $param2 .= 'one'; print $param1 . ' ' . $param2; }; }

  • jQuery回调函数的定义及用法实例

    本文实例讲述了jQuery回调函数的定义及用法.分享给大家供大家参考.具体分析如下: jQuery代码中对回调函数有着广泛的应用,对其有精准的理解是非常有必要的,下面就通过实例对此方法进行简单的介绍. 代码实例如下: 利用回调函数,当div全部隐藏之后弹出一个提示框. 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="a

  • JS回调函数基本定义与用法实例分析

    本文实例讲述了JS回调函数基本定义与用法.分享给大家供大家参考,具体如下: 初学js的时候,被回调函数搞得很晕,现在回过头来总结一下什么是回调函数. 我们先来看看回调的英文定义:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed. 字面上的理解,回调函数就是一个参数,将这个函数作为参数传到

  • php常用字符串长度函数strlen()与mb_strlen()用法实例分析

    本文实例讲述了php常用字符串长度函数strlen()与mb_strlen()用法.分享给大家供大家参考,具体如下: int strlen ( string $string ) int strlen ( string $string )  获取给定字符串的[字节]长度 成功则返回字符串$string的长度,如果$string为空,则返回 0. <?php $str1 = "abcdef"; //输出6 $str2 = " ab cd "; //输出7,注意,开

  • JS函数进阶之继承用法实例分析

    本文实例讲述了JS函数进阶之继承用法.分享给大家供大家参考,具体如下: 直接代码,不解释: <html> <head> <title>js函数继承进阶</title> <meta charset="UTF-8"/> <script type="text/javascript"> function person(name,age){ //对象的创建 this.name=name; this.age

  • es6函数之严格模式用法实例分析

    本文实例讲述了es6函数之严格模式用法.分享给大家供大家参考,具体如下: 从es5开始,函数内部可以设定为严格模式. function doSomething(a, b) { 'use strict' // code } es2016做了一点修改,规定只要函数参数使用了默认值,解构赋值,或者扩展运算符,那么函数内部就不能显示设定为严格模式,否则会报错. // 报错 function doSomething(a, b = a) { 'use strict' // code } const doSo

随机推荐