最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP 序列化和反序列化函數(shù)實(shí)例詳解

 更新時(shí)間:2020年07月18日 22:41:09   作者:路的盡頭  
這篇文章主要介紹了PHP 序列化和反序列化函數(shù),需要的朋友可以參考下

序列化與反序列化

把復(fù)雜的數(shù)據(jù)類型壓縮到一個(gè)字符串中

serialize() 把變量和它們的值編碼成文本形式
unserialize() 恢復(fù)原先變量 

1.創(chuàng)建一個(gè)$arr數(shù)組用于儲存用戶基本信息,并在瀏覽器中輸出查看結(jié)果;

$arr=array();
$arr['name']='張三';
$arr['age']='22';
$arr['sex']='男';
$arr['phone']='123456789';
$arr['address']='上海市浦東新區(qū)';
var_dump($arr);

輸出結(jié)果:

array(5) { 
["name"]=> string(6) "張三" 
["age"]=> string(2) "22" 
["sex"]=> string(3) "男" 
["phone"]=> string(9) "123456789" 
["address"]=> string(21) "上海市浦東新區(qū)"
 } 

2.將$arr數(shù)組進(jìn)行序列化賦值給$info字符串,并在瀏覽器中輸出查看結(jié)果;

$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個(gè)鍵值對,s:4標(biāo)志內(nèi)容為字符串包含4個(gè)字符。

通過序列化我們可以將一些模塊化的數(shù)據(jù)使用字符串的形式存儲在數(shù)據(jù)庫或session等,可以減少創(chuàng)建眾多繁瑣的數(shù)據(jù)表字段,當(dāng)然序列化為字符串存儲會增加額外的空間,應(yīng)合理的設(shè)計(jì)和應(yīng)用。

3.最后使用unserialize($info)反序列化將字符串還原成我們需要的數(shù)組模式;

$zhangsan=unserialize($info);
var_dump($zhangsan);

輸出結(jié)果:

array(5) {
["name"]=> string(6) "張三" 
["age"]=> string(2) "22" 
["sex"]=> string(3) "男" 
["phone"]=> string(9) "123456789" 
["address"]=> string(21) "上海市浦東新區(qū)" 
}

PHP序列化反序列化serialize和unserialize函數(shù)

昨天網(wǎng)上看到一道面試題,如下:

“類的屬性可以序列化后保存到session中,從而以后可以恢復(fù)整個(gè)類,這要用到的函數(shù)是?”

我記得原來老師說過序列化函數(shù)是"serialize",查了下,果不其然,今天記錄下,免得忘記。

<?php
  class aa{
    public $a = 1;
    private $b = 2;
    protected $c = 3;
 
    function afun(){
      return $this->a;
    }
    function bfun(){
      return $this->b;
    }
    function __destruct(){
      echo "變量銷毀了";
    }
  }
 
  $v = new aa;
  echo $v->afun();
  $se = serialize($v);
  unset($v); //這里先銷毀$v,這個(gè)時(shí)候會自動調(diào)用析構(gòu)函數(shù)
  echo "<hr />";
  $v = unserialize($se); //再反序列化
  echo $v->bfun();

看看運(yùn)行結(jié)果

如果覺得還不明顯, 好,我們在改一下代碼

aa.class.php

<?php
  class aa{
    public $a = 1;
    private $b = 2;
    protected $c = 3;
 
    function afun(){
      return '$a的值是:'.$this->a;
    }
    function bfun(){
      return '$b的值是:'.$this->b;
    }
  }

a1.php

<?php
  require './demo8.php';
  Session_start();
  $v = new aa();
  $_SESSION['v'] = serialize($v);

a2.php

<?php
  require './demo8.php';
  Session_start();
  $v = unserialize($_SESSION['v']);
  echo $v->bfun();

再看看結(jié)果是不是一目了然了呢,好了,試驗(yàn)做完了,結(jié)論調(diào)用下公論。
例子中的對象我們還可以換為數(shù)組等其他類型,效果都是一樣的!
其實(shí)serialize()就是將PHP中的變量如對象(object),數(shù)組(array)等等的值序列化為字符串后存儲起來.序列化的字符串我們可以存儲在其他地方如數(shù)據(jù)庫、Session、Cookie等,序列化的操作并不會丟失這些值的類型和結(jié)構(gòu)。這樣這些變量的數(shù)據(jù)就可以在PHP頁面、甚至是不同PHP程序間傳遞了。
而unserialize()就是把序列化的字符串轉(zhuǎn)換回PHP的值。

這里再引用一段PHP手冊上的說明,看了上面的例子,應(yīng)該很容易明白下面這些話的意思了
想要將已序列化的字符串變回 PHP 的值,可使用 unserialize()。serialize() 可處理除了 resource 之外的任何類型。甚至可以 serialize() 那些包含了指向其自身引用的數(shù)組。你正 serialize() 的數(shù)組/對象中的引用也將被存儲。

當(dāng)序列化對象時(shí),PHP 將試圖在序列動作之前調(diào)用該對象的成員函數(shù) __sleep()。這樣就允許對象在被序列化之前做任何清除操作。類似的,當(dāng)使用 unserialize() 恢復(fù)對象時(shí), 將調(diào)用 __wakeup() 成員函數(shù)
unserialize() 對單一的已序列化的變量進(jìn)行操作,將其轉(zhuǎn)換回 PHP 的值。返回的是轉(zhuǎn)換之后的值,可為 integer、float、string、array 或 object。如果傳遞的字符串不可解序列化,則返回 FALSE。

以上所述是小編給大家介紹的PHP 序列化和反序列化函數(shù)實(shí)例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • thinkphp框架類庫擴(kuò)展操作示例

    thinkphp框架類庫擴(kuò)展操作示例

    這篇文章主要介紹了thinkphp框架類庫擴(kuò)展操作,結(jié)合實(shí)例形式分析了thinkPHP框架類庫擴(kuò)展的原理、實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • PHP常用文件操作函數(shù)和簡單實(shí)例分析

    PHP常用文件操作函數(shù)和簡單實(shí)例分析

    下面小編就為大家?guī)硪黄狿HP常用文件操作函數(shù)和簡單實(shí)例分析。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • Laravel 自動生成驗(yàn)證的實(shí)例講解:login / logout

    Laravel 自動生成驗(yàn)證的實(shí)例講解:login / logout

    今天小編就為大家分享一篇Laravel 自動生成驗(yàn)證的實(shí)例分析:login / logout,具有好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • php redis setnx分布式鎖簡單原理解析

    php redis setnx分布式鎖簡單原理解析

    這篇文章主要介紹了php redis setnx分布式鎖簡單原理解析,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • tp5(thinkPHP5)框架實(shí)現(xiàn)多數(shù)據(jù)庫查詢的方法

    tp5(thinkPHP5)框架實(shí)現(xiàn)多數(shù)據(jù)庫查詢的方法

    這篇文章主要介紹了tp5(thinkPHP5)框架實(shí)現(xiàn)多數(shù)據(jù)庫查詢的方法,結(jié)合實(shí)例形式分析了thinkPHP5框架多數(shù)據(jù)庫查詢的相關(guān)配置、初始化及調(diào)用相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • PHP單例模式與工廠模式詳解

    PHP單例模式與工廠模式詳解

    這篇文章主要為大家詳細(xì)介紹了PHP單例模式與工廠模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • php ucwords() 函數(shù)將字符串中每個(gè)單詞的首字符轉(zhuǎn)換為大寫(實(shí)現(xiàn)代碼)

    php ucwords() 函數(shù)將字符串中每個(gè)單詞的首字符轉(zhuǎn)換為大寫(實(shí)現(xiàn)代碼)

    下面小編就為大家?guī)硪黄猵hp ucwords() 函數(shù)將字符串中每個(gè)單詞的首字符轉(zhuǎn)換為大寫(實(shí)現(xiàn)代碼)。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-05-05
  • php生成圖片驗(yàn)證碼-附五種驗(yàn)證碼

    php生成圖片驗(yàn)證碼-附五種驗(yàn)證碼

    這篇文章主要給大家講解php生成圖片驗(yàn)證碼,包括數(shù)字驗(yàn)證碼、數(shù)字和字母驗(yàn)證碼、中文驗(yàn)證碼、仿google驗(yàn)證碼、算術(shù)驗(yàn)證碼,實(shí)現(xiàn)此功能主要通過GD庫,生成一張帶有驗(yàn)證碼的圖片,并把驗(yàn)證碼存在session中,本文講解的比較全面,需要的朋友可以參考下
    2015-08-08
  • thinkPHP分組后模板無法加載問題解決方法

    thinkPHP分組后模板無法加載問題解決方法

    這篇文章主要介紹了thinkPHP分組后模板無法加載問題解決方法,分析了thinkPHP分組后模板無法加載的原因與相應(yīng)的設(shè)置方法,需要的朋友可以參考下
    2016-07-07
  • PHP與jquery實(shí)時(shí)顯示網(wǎng)站在線人數(shù)實(shí)例詳解

    PHP與jquery實(shí)時(shí)顯示網(wǎng)站在線人數(shù)實(shí)例詳解

    在線人數(shù)最簡單的就是直接利用js調(diào)用php了,這樣可以顯示出有多少人訪問了本站,如果要在用戶未刷新頁面的狀態(tài)實(shí)時(shí)顯示用戶在線人數(shù),我們可以利用jquery ajax來實(shí)現(xiàn),需要的朋友可以參考下
    2016-12-12

最新評論

沁水县| 岑巩县| 南漳县| 贵德县| 合山市| 柘城县| 安塞县| 福州市| 蓝田县| 景东| 牡丹江市| 房产| 武强县| 崇阳县| 红桥区| 丰镇市| 定远县| 扎鲁特旗| 郑州市| 江津市| 灌阳县| 桂东县| 益阳市| 昌宁县| 辉县市| 冕宁县| 宜丰县| 新安县| 清新县| 大冶市| 延边| 隆德县| 富源县| 资源县| 隆化县| 桑日县| 南和县| 武冈市| 福建省| 宕昌县| 利辛县|