IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    php多维数组转码

    summer发表于 2016-06-16 13:36:09
    love 0

    公司的老项目都是gbk编码的,但是新项目都是utf-8编码的。而项目之间交互涉及汉子难免就需要转码,普通字符串可以之间利用iconv来转码,数组就比较麻烦。以前的同事也写过数组转码的函数。
    如下:
    ```
    /**
    * 对所有数据类型进行转码
    *
    * @param mixed value
    * 待转码变量
    * @param string inCharset
    * 原编码, gbk
    * @param string outCharset
    * 目标编码, utf-8
    * @return mixed 转码后的数据
    */
    function iconvArray(value, inCharset = "gbk", outCharset = "utf-8")
    {
    if (is_array ( value ))
    {
    ret = array ();
    foreach ( value as key => one )
    {
    ret [key] = iconv ( inCharset, outCharset, one );
    ;
    }
    }
    else
    {
    ret = iconv ( inCharset, outCharset, value );
    }

    return ret;
    }
    ```
    很明显,以上函数只支持一维数组转码,对于多维就无能为力了。
    以下是自己写的转码函数,不管是字符串,还是一维、多维数组都可使用。
    ```
    /**
    * 编码转换(可以是多维数组)
    * @author shim
    * @param data 待转码变量
    * @param in_charset 原编码, gbk
    * @param out_charset 目标编码, utf-8
    * @return array 转码后的数据
    */
    function iconvArrayA(data, in_charset = 'gbk', out_charset = 'utf-8')
    {
    if (is_array(data))
    {
    foreach (data as key => val)
    {
    dataA[key] = iconvArrayA(val, in_charset, out_charset);
    }
    return dataA;
    }
    else
    {
    return iconv(in_charset, out_charset, data);
    }
    }

    ```



沪ICP备19023445号-2号
友情链接