PHP序列化與反序列化

  • 序列化斟或,指將PHP中 對象奶陈、類、數(shù)組十饥、變量丧蘸、匿名函數(shù)等漂洋,轉(zhuǎn)化為字符串遥皂,用戶「數(shù)據(jù)庫存儲」力喷、「數(shù)據(jù)的傳輸」
  • 反序列化,將字符串轉(zhuǎn)為:對象演训、類弟孟、數(shù)組、變量样悟、匿名函數(shù)
  • 序列化在每個編程語言里面都存在拂募,比如MFC
  • 廣義的說:將一個Word保存為docx,這就是序列化的過程窟她。打開docx文檔陈症,顯示內(nèi)容,就是反序列化的過程
  • ini/json/XML也是序列化的一種

1. serialize和unserialize函數(shù)

這兩個是序列化和反序列化PHP中數(shù)據(jù)的常用函數(shù)震糖。

class person {
    public $name;
    public $gender;

    public function say() {
        echo $this->name," is ",$this->gender;
    }
}

$student = new person();
$student->name = 'Tom';
$student->gender = 'male';
$student->say();

$str = serialize($student);
echo $str;
//O:6:"person":2:{s:4:"name";s:3:"Tom";s:6:"gender";s:4:"male";}

$student_str = array(
                    'name' => 'Tom',
                    'gender' => 'male',
                    );
echo serialize($student_str);
//a:2:{s:4:"name";s:3:"Tom";s:6:"gender";s:4:"male";}

//容易看出录肯,對象和數(shù)組在內(nèi)容上是相同的,他們的區(qū)別在于對象有一個指針吊说,指向了他所屬的類论咏。

2. json_encode 和 json_decode

JSON格式是開放的、可移植的颁井。其他語言也可以使用它,使用json_encode和json_decode格式輸出要比serialize和unserialize格式快得多厅贪。

$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');

$json = json_encode($a);
echo $json;

echo '<pre>';
echo '<br /><br />';
var_dump(json_decode($json));
echo '<br /><br />';
var_dump(json_decode($json, true));

--------------------------------------------------------------------
{"a":"Apple","b":"banana","c":"Coconut"}


object(stdClass)#1 (3) {
  ["a"]=>
  string(5) "Apple"
  ["b"]=>
  string(6) "banana"
  ["c"]=>
  string(7) "Coconut"
}


array(3) {
  ["a"]=>
  string(5) "Apple"
  ["b"]=>
  string(6) "banana"
  ["c"]=>
  string(7) "Coconut"
}

json_decode轉(zhuǎn)換時不加參數(shù)默認輸出的是對象,如果加上true之后就會輸出數(shù)組雅宾。

3. var_export 和 eval

var_export 函數(shù)把變量作為一個字符串輸出养涮;eval把字符串當成PHP代碼來執(zhí)行,反序列化得到最初變量的內(nèi)容。

$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');

$s = var_export($a , true);
echo $s;

echo '<br /><br />';

eval('$my_var=' . $s . ';');

print_r($my_var);

------------------------------------------------------------
array ( 'a' => 'Apple', 'b' => 'banana', 'c' => 'Coconut', )

Array ( [a] => Apple [b] => banana [c] => Coconut )
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贯吓,一起剝皮案震驚了整個濱河市贬芥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宣决,老刑警劉巖蘸劈,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異尊沸,居然都是意外死亡威沫,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門洼专,熙熙樓的掌柜王于貴愁眉苦臉地迎上來棒掠,“玉大人,你說我怎么就攤上這事屁商⊙毯埽” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵蜡镶,是天一觀的道長雾袱。 經(jīng)常有香客問我,道長官还,這世上最難降的妖魔是什么芹橡? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮望伦,結(jié)果婚禮上林说,老公的妹妹穿的比我還像新娘。我一直安慰自己屯伞,他們只是感情好腿箩,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著劣摇,像睡著了一般珠移。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饵撑,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天剑梳,我揣著相機與錄音,去河邊找鬼滑潘。 笑死垢乙,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的语卤。 我是一名探鬼主播追逮,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼酪刀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了钮孵?” 一聲冷哼從身側(cè)響起骂倘,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎巴席,沒想到半個月后历涝,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡漾唉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年荧库,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赵刑。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡分衫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出般此,到底是詐尸還是另有隱情蚪战,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布铐懊,位于F島的核電站邀桑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏居扒。R本人自食惡果不足惜概漱,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一丑慎、第九天 我趴在偏房一處隱蔽的房頂上張望喜喂。 院中可真熱鬧,春花似錦竿裂、人聲如沸玉吁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽进副。三九已至,卻和暖如春悔常,著一層夾襖步出監(jiān)牢的瞬間影斑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工机打, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留矫户,地道東北人。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓残邀,卻偏偏與公主長得像皆辽,于是被迫代替她去往敵國和親柑蛇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內(nèi)容

  • php.ini設(shè)置,上傳大文件: post_max_size = 128Mupload_max_filesize ...
    bycall閱讀 6,756評論 3 64
  • PHP 學(xué)習(xí)目錄 ├─PHP視頻教程 1 LAMP網(wǎng)站構(gòu)建 │ ├─PHP教程 1.1.1 新版視頻形式介紹│ ...
    曹淵說創(chuàng)業(yè)閱讀 16,155評論 29 417
  • php usleep() 函數(shù)延遲代碼執(zhí)行若干微秒驱闷。 unpack() 函數(shù)從二進制字符串對數(shù)據(jù)進行解包耻台。 uni...
    思夢PHP閱讀 1,984評論 1 24
  • 序列化是將變量轉(zhuǎn)換為可保存或傳輸?shù)淖址倪^程;反序列化就是在適當?shù)臅r候把這個字符串再轉(zhuǎn)化成原來的變量使用空另。這兩個...
    FrancisSoung閱讀 583評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理盆耽,服務(wù)發(fā)現(xiàn),斷路器扼菠,智...
    卡卡羅2017閱讀 134,652評論 18 139