serialize
调用形式:string serialize(mixed value)
serialize是PHP的标准函数。作用是产生一个可存储的值的表示。该函数接受一个参数,并且返回一个字符串。该字符串代表了参数的字符串,并且该字符串可以存储于任何地方。
为什么要用serialize函数呢,因为这样就有助于存储和传递PHP的值,同时不丢失其类型和结构。当你需要恢复数据的时候,只需要调用unserialize()就行了。PHP5可以同时储存对象和方法。
md5
调用形式:string md5(string str [,bool raw_output])
md5也是PHP的标准函数。作用是计算字符串的MD5散列。如果成功返回字符串,失败返回false.该函数接受两个参数,一个是要操作的字符串,一个是设置数值。如果为true则为16字符的二进制。模式为false,表示32字符十六进制数
关于为什么要使用md5这个函数,还不是很清楚。
测试代码
<?php
//测试字符串
$before ="My name is zhangmin!";
$after = serialize($before);
$back = unserialize($after);
echo $before."<br />";
echo $after."<br />";
echo $back."<br />";
$md5_before = md5($before);
$md5_after = md5($after);
echo $md5_before."<br />";
echo $md5_after."<br />";
//测试数组
$testArray = array("zhang"=>"min" ,"chen"=>"liu");
echo serialize($testArray)."<br />";
print_r (unserialize(serialize($testArray)));
echo "<br />";
//测试对象
$me = new perpel();
echo $me->getName()."<br />";
$afterme = serialize($me);
echo $afterme."<br/>";
echo unserialize($afterme)->getName();
?>
<?php
class perpel
{
private $name;
private $age;
public function perpel()
{
$this->name ="ZhangMin";
$this->age =25;
}
public function setName($newName)
{
$this->name = $newName;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
输出结果
My name is zhangmin!
s:20:"My name is zhangmin!";
My name is zhangmin!
aaef326ba483bd01d2ad7123e39c1bc0
5fa2e671cd03df695d6a0bb9cc876e48
a:2:{s:5:"zhang";s:3:"min";s:4:"chen";s:3:"liu";}
Array ( [zhang] => min [chen] => liu )
ZhangMin
O:6:"perpel":2:{s:12:"perpelname";s:8:"ZhangMin";s:11:"perpelage";i:25;}
ZhangMin