亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2017年11月02日 16:51:17   投稿:mdxy-dxy  
這篇文章主要介紹了php serialize()與unserialize() 的一些區(qū)別,需要的朋友可以參考下

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

serialize — Generates a storable representation of a value

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

unserialize — Creates a PHP value from a stored representation

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

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

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

<?php
//聲明一個(gè)類
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);
  }
}
//實(shí)例化這個(gè)類
$ourfirstdog = new dog("Rover",12,"Lisa and Graham");
//用serialize函數(shù)將這個(gè)實(shí)例轉(zhuǎn)化為一個(gè)序列化的字符串
$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 存儲(chǔ)到任何地方如 session,cookie,數(shù)據(jù)庫,php文件 
-----------------------------------------------------------------------
*/

//我們?cè)诖俗N這個(gè)類
unset($ourfirstdog);

/*  還原操作  */

/* 
-----------------------------------------------------------------------
  在這里將字符串 $dogdisc 從你存儲(chǔ)的地方讀出來如 session,cookie,數(shù)據(jù)庫,php文件 
-----------------------------------------------------------------------
*/


//我們?cè)谶@里用 unserialize() 還原已經(jīng)序列化的對(duì)象
$pet = unserialize($dogdisc); //此時(shí)的 $pet 已經(jīng)是前面的 $ourfirstdog 對(duì)象了
//獲得年齡和名字屬性
$old = $pet->getage();
$name = $pet->getname();
//這個(gè)類此時(shí)無需實(shí)例化可以繼續(xù)使用,而且屬性和值都是保持在序列化之前的狀態(tài)
print "Our first dog is called $name and is $old days old<br>";
print '<BR>';
?>

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

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

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

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

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

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

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

相關(guān)文章

  • 深入分析PHP設(shè)計(jì)模式

    深入分析PHP設(shè)計(jì)模式

    這篇文章主要介紹了PHP設(shè)計(jì)模式的相關(guān)知識(shí),文中講解非常細(xì)致,代碼幫助大家更好的理解學(xué)習(xí),感興趣的朋友可以參考下
    2020-06-06
  • session在PHP大型web應(yīng)用中的使用

    session在PHP大型web應(yīng)用中的使用

    對(duì)于訪問量大的站點(diǎn),用默認(rèn)的session存貯方式并不適合,目前最優(yōu)的方法是用數(shù)據(jù)庫存取session.
    2011-06-06
  • PHP數(shù)組操作簡單案例分析

    PHP數(shù)組操作簡單案例分析

    這篇文章主要介紹了PHP數(shù)組操作,結(jié)合簡單實(shí)例形式分析了php數(shù)組轉(zhuǎn)換、排序、移除等相關(guān)操作技巧,需要的朋友可以參考下
    2016-10-10
  • php 下載保存文件保存到本地的兩種實(shí)現(xiàn)方法

    php 下載保存文件保存到本地的兩種實(shí)現(xiàn)方法

    以下是對(duì)php下載保存文件保存到本地的兩種實(shí)現(xiàn)方法進(jìn)行了介紹,需要的朋友可以過來參考下
    2013-08-08
  • PHP 開發(fā)環(huán)境配置(測試開發(fā)環(huán)境)

    PHP 開發(fā)環(huán)境配置(測試開發(fā)環(huán)境)

    PHP發(fā)開環(huán)境配置(測試開發(fā)環(huán)境),測試環(huán)境是否配置的正確。
    2010-04-04
  • php獲取客戶端電腦屏幕參數(shù)的方法

    php獲取客戶端電腦屏幕參數(shù)的方法

    這篇文章主要介紹了php獲取客戶端電腦屏幕參數(shù)的方法,可獲得寬度,高度,分辨率等參數(shù),主要使用了js的方法獲取客戶端電腦屏幕的參數(shù)再利用Ajax返回給服務(wù)器端,進(jìn)而實(shí)現(xiàn)獲取客戶端電腦屏幕參數(shù)的功能,需要的朋友可以參考下
    2015-01-01
  • php正則回溯繞過最大次數(shù)上限案例詳解

    php正則回溯繞過最大次數(shù)上限案例詳解

    這篇文章主要介紹了php利用正則回溯進(jìn)行繞過最大次數(shù)上限的案例方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • PHP之生成GIF動(dòng)畫的實(shí)現(xiàn)方法

    PHP之生成GIF動(dòng)畫的實(shí)現(xiàn)方法

    本篇文章是對(duì)PHP生成GIF動(dòng)畫的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • php與Mysql的一些簡單的操作

    php與Mysql的一些簡單的操作

    本文給大家分享的是php連接mysql數(shù)據(jù)庫的方式以及操作數(shù)據(jù)庫的方法,需要的朋友可以參考下
    2015-02-02
  • 關(guān)于PHP通用返回值設(shè)置方法

    關(guān)于PHP通用返回值設(shè)置方法

    下面小編就為大家?guī)硪黄P(guān)于PHP通用返回值設(shè)置方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03

最新評(píng)論