国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php serialize()與unserialize() 不完全研究

2024-05-05 00:00:54
字體:
來源:轉載
供稿:網(wǎng)友

serialize()和unserialize()在php手冊上的解釋是:

serialize — Generates a storable representation of a value

serialize — 產(chǎn)生一個可存儲的值的表示

unserialize — Creates a PHP value from a stored representation

unserialize — 從已存儲的表示中創(chuàng)建 PHP 的值

很顯然,"a stored representation"的解釋翻譯成了一個可存儲的值后依然很讓人非常費解它的意思。

如果語言已經(jīng)無法表述清楚,那么我們可以以一個具體的PHP的例子來學習這兩個函數(shù)的用途

<?php//聲明一個類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函數(shù)將這個實例轉化為一個序列化的字符串$dogdisc = serialize($ourfirstdog);print $dogdisc; //$ourfirstdog 已經(jīng)序列化為字符串 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,數(shù)據(jù)庫,php文件 -----------------------------------------------------------------------*///我們在此注銷這個類unset($ourfirstdog);/*  還原操作  *//* -----------------------------------------------------------------------  在這里將字符串 $dogdisc 從你存儲的地方讀出來如 session,cookie,數(shù)據(jù)庫,php文件 -----------------------------------------------------------------------*///我們在這里用 unserialize() 還原已經(jīng)序列化的對象$pet = unserialize($dogdisc); //此時的 $pet 已經(jīng)是前面的 $ourfirstdog 對象了//獲得年齡和名字屬性$old = $pet->getage();$name = $pet->getname();//這個類此時無需實例化可以繼續(xù)使用,而且屬性和值都是保持在序列化之前的狀態(tài)print "Our first dog is called $name and is $old days old<br>";print '<BR>';?>

例子中的對象我們還可以換為數(shù)組等其他類型,效果都是一樣的!

  其實serialize()就是將PHP中的變量如對象(object),數(shù)組(array)等等的值序列化為字符串后存儲起來.序列化的字符串我們可以存儲在其他地方如數(shù)據(jù)庫、Session、Cookie等,序列化的操作并不會丟失這些值的類型和結構。這樣這些變量的數(shù)據(jù)就可以在PHP頁面、甚至是不同PHP程序間傳遞了。

  而unserialize()就是把序列化的字符串轉換回PHP的值。

  這里再引用一段PHP手冊上的說明,看了上面的例子,應該很容易明白下面這些話的意思了

  想要將已序列化的字符串變回 PHP 的值,可使用 unserialize()。serialize() 可處理除了 resource 之外的任何類型。甚至可以 serialize() 那些包含了指向其自身引用的數(shù)組。你正 serialize() 的數(shù)組/對象中的引用也將被存儲。

  當序列化對象時,PHP 將試圖在序列動作之前調(diào)用該對象的成員函數(shù) __sleep()。這樣就允許對象在被序列化之前做任何清除操作。類似的,當使用 unserialize() 恢復對象時, 將調(diào)用 __wakeup() 成員函數(shù)

  unserialize() 對單一的已序列化的變量進行操作,將其轉換回 PHP 的值。返回的是轉換之后的值,可為 integer、float、string、array 或 object。如果傳遞的字符串不可解序列化,則返回 FALSE。


注:相關教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 庄浪县| 巨野县| 什邡市| 晴隆县| 吴堡县| 汕头市| 房产| 五台县| 南皮县| 吴川市| 南澳县| 松阳县| 金寨县| 长武县| 客服| 托克逊县| 天柱县| 广西| 万荣县| 麻栗坡县| 乐平市| 天峻县| 蒙城县| 黑龙江省| 明水县| 普格县| 乌兰县| 绥化市| 连江县| 天台县| 长海县| 寿宁县| 东平县| 同江市| 云阳县| 云林县| 交口县| 望江县| 上杭县| 嵊泗县| 齐齐哈尔市|