• php数组转为字符串,数据库存储


    php对象转字符存储数据库的方法。

    总所周知对象是不能直接存储到数据库的。那么我们用什么样的方法能够存储到数据库中能?

    方法一:序列化serializeunserialize

    序列化对象serialize

    反序列化对象unserialize

    当数组值包含如双引号、单引号或冒号等字符时,它们被反序列化后,可能会出现问题。

    为了克服这个问题,可以使用base64_encode和base64_decode。

    但是base64编码将增加字符串的长度。为了克服这个问题,可以和gzcompress一起使用。

    //定义一个用来序列化对象的函数
    function my_serialize( $obj ) 
    { 
       return base64_encode(gzcompress(serialize($obj))); 
    } 
    //反序列化
    function my_unserialize($txt) 
    { 
       return unserialize(gzuncompress(base64_decode($txt))); 
    }

    方法二:json_encode 和 json_decode

    使用JSON格式序列化和反序列化是一个不错的选择: 

    使用json_encode和json_decode格式输出要serialize和unserialize格式快得多。

    JSON格式是可读的。

    json格式很多语言都可以解析

    方法三:var_export 和 eval

    var_export 函数把变量作为一个字符串输出;eval把字符串当成PHP代码来执行,反序列化得到最初变量的内容。

    $str="array (
            0 => 'a',
            1 => 'b',
            2 => 'c',
    )";
    $arr=eval("return {$str};");
    //结果是
    array (
            0 => 'a',
            1 => 'b',
            2 => 'c',
    )
    $re=var_export($reArr, true);
    //结果是
    "array (
            0 => 'a',
            1 => 'b',
            2 => 'c',
    )";

    方法四:wddx_serialize_value 和 wddx deserialize

    wddx_serialize_value函数可以序列化数组变量,并以XML字符串形式输出。

  • 相关阅读:
    2018.08.02
    加油。
    2018.07.08
    2018.06.22
    LeetCode #169. Majority Element 数组 摩尔投票法
    LeetCode #119 Pascal's Triangle II 数组 滚动数组
    LeetCode #845 Longest Mountain in Array 数组 线性DP
    LeetCode #41 First Missing Positive 数组
    LeetCode #384 Shuffle an Array 数组 洗牌算法
    LeetCode #189 Rotate Array 数组 双变量 双指针
  • 原文地址:https://www.cnblogs.com/binglab/p/4074329.html
Copyright © 2020-2023  润新知