• 【2018夏季达沃斯】未来就业报告发布:机器将比人更“能干” 哪些职位更“吃香”? 2018-09-19
  • 西安市民:本想买点香菜吃火锅?比较后还是买了些肉 2018-09-19
  • 安吉发布乡村治理标准规范 2018-09-19
  • 华北能源监管局开展电网运行风险管控专项督查 2018-09-18
  • 马来西亚新山依斯干达特区吸资2531亿马币 ——凤凰网房产马来西亚 2018-09-18
  • 繁星戏剧挑战浸没式独角戏 2018-09-18
  • 领导干部自然资源资产离任审计制度试点 让福建省光泽县绿意盎然(图)-地方新闻-时政频道-中工网 2018-09-08
  • 人民日报评留美生数落父母:为亲情拓对话空间 2018-09-07
  • 网友给四川省委书记、省长留言获回复 共计25条 2018-09-07
  • 娱乐城新优惠 2018-09-06
  • 无人售货架现身出租车内 乘客扫码付款随时取走零食 2018-09-06
  • 江西公布拖欠劳动报酬典型案例 最高拖欠近200万元 2018-09-06
  • 做学习宣传贯彻人民领袖思想的排头兵 2018-09-06
  • 华夏幸福荣获2018中国品牌先锋大奖之杰出企业奖 2018-09-05
  • 10大路口因礼让斑马线致堵 济南交警推新规约束行人 ——凤凰网房产济南 2018-09-05
  • PHP序列化反序列化的方法详解

    栏目: 编程语言 发布于: 2014-04-27 00:00:02

    在一些开源的php源代码中,我们经??吹揭恍┡渲梦募锩娲娣诺氖且恍├嗨拼懈袷降谋淞棵坪椭?。刚开始还不明白这个是怎么回事儿。后来才知道这个是为了将一个复杂(也可能并不那么复杂)的数据结构转换成一个字符串,以便于保存和传递。其实就是一个序列化的过程,在需要用到这些数据库的时候会进行一个反序列化过程,就是将这个字符串再还原成他原来的数据结构。下面说说 php 如何进行数据的序列化和反序列化的。

    php 将数据序列化和反序列化其实就用到两个函数,serialize 和 unserialize。

    serialize 将数组格式化成有序的字符串

    unserialize 将数组还原成数组

    例如:

    $user=array('Moe','Larry','Curly');
    $user=serialize($stooges);
    echo '<pre>';
    print_r($user);
    echo '<br />';
    print_r(unserialize($user));

    结果:

    a:3:{i:0;s:3:"Moe";i:1;s:5:"Larry";i:2;s:5:"Curly";}
    Array ( [0] => Moe [1] => Larry [2] => Curly )

    注意当数组值包含如双引号、单引号、冒号或中文等字符时,它们被反序列化后,可能会出现乱码或格式被打乱的问题。解决这个问题可以使用 base64_encode 和 base64_decode 两个函数。

    例如:

    $user=array('Moe','Larry','Curly');
    $user=base64_encode(serialize($user)); 
    $user=unserialize(base64_decode($user));

    这样就不会出现乱码类的问题了,但是 base64 编码却增加了存储字符串的长度。对于这个问题,可以使用 gzcompress 来解决。

    由以上我们可以总结出一个自己的序列化和反序列化的函数来,如下:

    function my_serialize($obj_array){ 
       return base64_encode(gzcompress(serialize($obj_array))); 
    }
    //反序列化
    function my_unserialize($str){ 
       return unserialize(gzuncompress(base64_decode($str))); 
    }
    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:PHP序列化反序列化的方法详解
    IT技术书籍推荐:
    疯狂Android讲义(第3版)
    疯狂Android讲义(第3版)
    李刚 (作者)
    移动互联网已经成为当今世界发展最快、市场潜力最大、前景最诱人的业务,而Android则是移动互联网上市场占有率最高的平台。 本书是《疯狂Android讲义》的第3版,本书基于最新的Android 5,并采用了Google推荐的IDE:Android Studio作为开发工具,书中每个案例、每个截图都全面升级到Android 5。本书全面介绍了Android应用开发的相关知识,全书内容覆盖了Android用户界面编程、Android四大组件、Android资源访问、图形/图像处理、事件处理机制、Android输入/输出处理、音频/视频多媒体应用开发、OpenGL与3D应用开发、网络通信编程、Android平台的Web Service、传感器应用开发、GPS应用开发、整合第三方Map服务等。