日期:2014-05-17  浏览次数:20514 次

问各位老大一个简单的问题, 如何转换数组的字符集?
对于字符串, 有mb_convert_encoding()函数. 

可是对于一个数组呢? 难道要循环着用这个函数吗:

array_map(
        function($value) use($from, $to) {return mb_convert_encoding($value, $from, $to);}, 
        $input
    );


这样会产生效率问题, 如果一个大数据, 就弱爆了. 
能不能一次处理,有这样的内置函数吗?或者其他的解决方案?

------解决方案--------------------
array_walk、array_walk_recursive 
但也只是把循环弄到内部去了
但总还是要比你递归的循环来的快
你光 array_map 是不行的!要是多维数组就无能为力了
也可以用迭代器

其实字符集只是在输入输出时才会有转换的要求
输入(比如读数据库),mysql 会给你需要的字符集,不需要自己转换
输出 可透过 ob_start 完成
mb_internal_encoding("gbk");  // 假定你的程序是gbk的 
mb_http_output("utf-8"); // 要输出成 utf-8 的
ob_start('mb_output_handler'); // 只需这样就可以了
其后输出的内容就全部变成 utf-8 的了