请写出php变量序列化和反序列化的函数,并举出1个应用例子

 我来答
匿名用户
2013-04-13
展开全部
PHP中的序列化和反序列化分别通过函数serialize()和unserialize()即可实现。serialize()的参数可以是resource类型外的所有变量类型,最常见的是用来序列化对象,unseialize()将serialize的返回结果作为参数,进行反序列化,得到原对象。$str = serialize ($obj);...$obj222 = unserialize($str);现在可以用$object222对象来执行该对象可以执行的各种操作。在用serialize序列化对象时,会自动调用__sleep方法,__sleep方法必须返回一个数组,包含需要串行化的属性。 PHP会抛弃其它属性的值, 如果没有__sleep方法,PHP将保存所有属性,包括private属性。用unserialize反序列化对象时,PHP 会调用__wakeup方法。__sleep和__wakeup方法可以根据实际需要,都添加上,也可以只要其中的一个,当然也可以都不要。下面给出一个序列化的代码:共serialize.php和unserialize.php两个文件。// serialize.php<?php
class User
{
private $name;
private $id;
public $sex="F";

function __construct()
{
//give user a unique ID 赋予一个不同的ID
$this->id = uniqid();
}

function __sleep()
{
//do not serialize this->id 不串行化id
return(array("name","sex"));
}

function __wakeup()
{
//give user a unique ID
$this->id = uniqid();
}

function p(){
echo "in function p() \t";
return $this->name;
}
function setname($name){
$this->name = $name;
}
} //create object 建立一个对象
$u = new User;
$u->setname("pphu");
//serialize it 串行化
$s = serialize($u);
echo "in serialize.php <br/>";
print_r($s);
echo "<br/>";
print_r($u);
echo "<br/><br/>";
?> //// unserialize.php<?php
include('serialize.php');
//global $s;
$u2 = unserialize($s);
echo "in unserialize.php<br/>";
echo $u2->p()."<br/>";
echo $u2->sex."<br/>";
print_r($u2);
?>
匿名用户
2013-04-13
展开全部
serialize()unserialize()比如你有个数组 怎么存进数据库呢有这个就好啦首先将数据序列化成个字符串$str = serialize($arr);然后存进数据库想用的话$arr = unserialize($str);就ok了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gongkai1985
2013-04-13 · TA获得超过226个赞
知道小有建树答主
回答量:246
采纳率:100%
帮助的人:168万
展开全部
<?php
$stooges = array('Moe','Larry','Curly');
$new = serialize($stooges);
print_r($new);echo "<br />";
print_r(unserialize($new));
?>

serialize() 把变量和它们的值编码成文本形式

unserialize() 恢复原先变量

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式