本文實(shí)例講述了PHP常見的序列化與反序列化操作。分享給大家供大家參考,具體如下:
1.概念
serialize()
把變量和它們的值編碼成文本形式
unserialize()
恢復(fù)原先變量
2.序列化例子
輸入輸出
$arr=array();
$arr['name']='張三';
$arr['age']='22';
$arr['sex']='男';
$arr['phone']='123456789';
$arr['address']='上海市浦東新區(qū)';
var_dump($arr);
array(5) {
["name"]=> string(6) "張三"
["age"]=> string(2) "22"
["sex"]=> string(3) "男"
["phone"]=> string(9) "123456789"
["address"]=> string(21) "上海市浦東新區(qū)"
}
序列化操作
$info=serialize($arr);
var_dump($info);
輸出結(jié)果
string(140) "a:5:{s:4:"name";s:6:"張三";s:3:"age";s:2:"22";s:3:"sex";s:3:"男";s:5:"phone";s:9:"123456789";s:7:"address";s:21:"上海市浦東新區(qū)";}"
解析
使用序列化serialize($arr)函數(shù),將數(shù)組中元素的鍵和值按照規(guī)則順序連接成字符串。
a:5標(biāo)志序列化為array包含5個鍵值對,
s:4標(biāo)志內(nèi)容為字符串包含4個字符。
3.反序列化列子
$zhangsan=unserialize($info);
var_dump($zhangsan);
輸出
array(5) {
["name"]=> string(6) "張三"
["age"]=> string(2) "22"
["sex"]=> string(3) "男"
["phone"]=> string(9) "123456789"
["address"]=> string(21) "北京市海淀區(qū)"
}
4.優(yōu)缺點(diǎn)
通過序列化我們可以將一些模塊化的數(shù)據(jù)使用字符串的形式存儲在數(shù)據(jù)庫或session等,可以減少創(chuàng)建眾多繁瑣的數(shù)據(jù)表字段,當(dāng)然序列化為字符串存儲會增加額外的空間,應(yīng)合理的設(shè)計和應(yīng)用。
這有利于存儲或傳遞 PHP 的值,同時不丟失其類型和結(jié)構(gòu)。
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP基本語法入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計有所幫助。
您可能感興趣的文章:- 詳解php反序列化
- php反序列化長度變化尾部字符串逃逸(0CTF-2016-piapiapia)
- 淺析PHP反序列化中過濾函數(shù)使用不當(dāng)導(dǎo)致的對象注入問題
- JSON PHP中,Json字符串反序列化成對象/數(shù)組的方法
- 詳解PHP序列化和反序列化原理
- PHP序列化和反序列化深度剖析實(shí)例講解