≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > PHP笔记

PHP 数组编码转换的简单示例

人气:577 时间:2018-09-21

这篇文章主要为大家详细介绍了PHP 数组编码转换的简单示例,具有一定的参考价值,可以用来参考一下。

对PHP数组编码转换感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!
因为一些特殊字符的显示效果的原因不得不把习惯的utf-8工程改成了GBK,由于使用了ajax技术,又涉及到了老问题——编码转换。 一些表单验证需要返回json数据,php的json_encode函数只支持utf-8编码,无奈只得iconv了,需要达到的效果是GBK数组转换成utf-8数组传给json_encode函数。
最开始的思路,将数组序列化后用iconv函数转换编码,之后再反序列化,代码如下:

/**
 * PHP数组编码转换
 *
 * @param 
 * @arrange 五一二笔记网: q1010.com
 **/
unserialize(iconv('gbk','utf-8',serialize($array)));   
/***   来自四海网(www.q1010.com)   ***/
得到的结果是空白,后来想起来配置文件里设置了默认编码 ini_set('default_charset', 'gbk'); 这样用gbk反序列化utf-8的字符串肯定不好用了,此处在序列化和反序列化之间加个ini_set('default_charset', 'utf-8'); 应该也是可以的,但这么弄总觉得有点别扭,因为是全局的编码设置,很容易导致其他地方的编码问题,比如数据库操作。那么换个思路,用构建数组原型的序列化方法,借助var_export函数,最终函数如下:

/**
 * PHP数组编码转换
 *
 * @param 
 * @arrange 五一二笔记网: q1010.com
 **/
function array_iconv($in_charset,$out_charset,$arr){    
	return eval('return '.iconv($in_charset,$out_charset,var_export($arr,true).';'));    
}  
/***   来自四海网(www.q1010.com)   ***/

原理很简单 var_export设置第二个参数为true,返回数组原型字符串,将字符串转换为utf-8编码,之后再用eval来执行返回(类似匿名函数?),至此完美解决问题。
后续:
后来在网上搜了下资料,看有没有更好的方法,找到的都大同小异,都是利用递归调用iconv的方式,如果数组元素过多或者维数多一些,性能上肯定不怎么样了,更好的是原生代码的方式,不需要考虑是N维数组还是关联数组,一切都已经自动完成,保证数组转换前后数据一致。从代码的长短以及循环和原生方法的比较上,相信大家已经有了选择。

本文来自:http://www.q1010.com/173/785-0.html

注:关于PHP 数组编码转换的简单示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:数组

您可能感兴趣的文章

  • php 控制数组按指定KEY排序实现方法
  • php 统计多维数组元素个数的简单示例
  • php 根据key计算多维数组的和功能实例
  • php 数组填充下拉列表框的简单示例
  • php 专用数组排序类用法示例
  • php 将HTML表格每行数据转为CSV格式数组示例
  • php 将CVS文件转换成数组的简单示例
  • php 将HTML表格的每行每列转为数组,采集表格数据的简单示例
  • php 使用post数组键值自动创建同名变量并赋值的简单示例
  • JS 在数组特定索引处指定位置插入元素的简单示例
上一篇:php 控制文件下载速度功能实例
下一篇:php 找出数组重复数据的实现方法
热门文章
  • PHP 写入WRITE编码为UTF8的文件示例
  • PHP 中文字符串截取函数示例:支持gb2312,gbk,big
  • PHP 简单留言板的制作示例
  • 解决Fatal error: Call to undefined function mb_convert_encoding() in错误问题
  • PHP语言基础(标记、注释、变量、数组、常量、函数)示例
  • php 生成迅雷链接的简单示例
  • php 获取短网址的实现方法
  • PHP 通用分页类的简单示例
  • PHP 使用文件方式导入导出整个MYSQL数据库的实现方法
  • php 获取MYSQL错误的简单示例
  • 最新文章
    • 解决PHP使用redis实现统计缓存MySQL压力的问题
    • php 简单的上传进度条的简单示例
    • php 给html中引用的js和css路径打上版本号的实现方法
    • php 实现计算年龄精准到年月日的实例
    • php+ajax无刷新分页的简单示例
    • 解决php+ajax无刷新上传图片的问题
    • 解决PHP生成HTML静态页面的问题
    • 解决PHP使用uniqid函数生成唯一ID的问题
    • 解决PHP防刷票的一些问题
    • 微信access_token的获取开发的实现方法

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。