• 技术文章 >后端开发 >PHP问题

    php序列化是什么意思

    (*-*)浩(*-*)浩2019-09-12 13:11:08原创38
    序列化是将变量转换为可保存或传输的字符串的过程;反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性。

    PHP中的序列化和反序列化分别通过函数serialize()和unserialize()即可实现。

    string serialize ( mixed value )

    serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。(推荐学习:PHP编程从入门到精通

    这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。

    想要将已序列化的字符串变回 PHP 的值,可使用 unserialize()。serialize() 可处理除了 resource 之外的任何类型。甚至可以 serialize() 那些包含了指向其自身引用的数组。你正 serialize() 的数组/对象中的引用也将被存储。

    当序列化对象时,PHP 将试图在序列动作之前调用该对象的成员函数 __sleep()。这样就允许对象在被序列化之前做任何清除操作。类似的,当使用 unserialize() 恢复对象时, 将调用 __wakeup() 成员函数。

    注: 在 PHP 3 中,对象属性将被序列化,但是方法则会丢失。PHP 4 打破了此限制,可以同时存储属性和方法。请参见类与对象中的序列化对象部分获取更多信息。

    serialize() 示例

    <?php
    // $session_data 是包含了当前用户 session 信息的多维数组。
    // 我们使用 serialize() 在请求结束之前将其存储到数据库中。
    
    $conn = odbc_connect ("webdb", "php", "chicken");
    $stmt = odbc_prepare ($conn,
    "UPDATE sessions SET data = ? WHERE id = ?");
    $sqldata = array (serialize($session_data), $PHP_AUTH_USER);
    if (!odbc_execute ($stmt, &$sqldata)) {
    $stmt = odbc_prepare($conn,
    "INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!odbc_execute($stmt, &$sqldata)) {
    /* 出错 */
    }
    }
    ?>

    以上就是php序列化是什么意思的详细内容,更多请关注php中文网其它相关文章!

    phpstudy集成环境下载
    本文原创发布php中文网,转载请注明出处,感谢您的尊重!
    专题推荐:php
    上一篇:php用apache还是nginx 下一篇:php析构函数什么时候调用

    相关文章推荐

    • wamp运行PHP中文字乱码• php支持多线程吗• php支持多继承吗• php正则表达式有什么用

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网