PHP开发实例大全(提高卷) 中文完整pdf扫描版[244MB]
Php中对一个字符串进行编码格式转换很简单直接使用iconv()函数就可以 比如:iconv(“utf-8”,”gbk”,”我的祖国”)把字符串”我的祖国”的编码格式由utf-8转换成gbk格式,可是如果要对一个数组中的值进行转换如何操作?尤其是多维数组。在php的函数库中没有直接对数组内容进行编码转换的函数,只能自己定义。
对多维数组进行编码转换,在操作中要使用到递归
实例:
下面定义的数组中键和值中都有汉字,是为了在测试中让自定义的转码函数m_iconv更加健全
$dd = array( 0, 1, "d" => "e问问", "q"=>"444", "f刚刚"=>array( 3, 4, "t" => "5方法", "我"=> "6搜索" ) ); $d = m_iconv('utf-8','gbk',$dd); print_r($d);
自己定义数组内容转码函数
/** * php转码函数 * $in_charset 此刻编码 * $out_charset 转码后,输出的编码 * $datas 要转码的数据 */ function m_iconv($in_charset,$out_charset,$datas){ if(is_array($datas)){ //如果数据为数组 foreach($datas as $k=>$v){ if(is_array($v)){ //如果数据为多维数组,进行下面的递归调用m_iconv()函数自身 $k = iconv($in_charset,$out_charset,$k); //多维数组的键进行转码,这里可以把键设置为汉字测试看看 $ml[$k] = m_iconv($in_charset,$out_charset,$v); }elseif(is_string($k) || is_string($v)){ //如果是一维数组判断键和值是否为字符串 if(is_string($k)){ $k = iconv($in_charset,$out_charset,$k); } if(is_string($v)){ $v = iconv($in_charset,$out_charset,$v); } $ml[$k] = $v; }else{ $ml[$k] = $v; //一维数组键和值都为数组 } } }elseif(is_string($datas)){ //如果数据为字符串 $ml = iconv($in_charset,$out_charset,$datas); }else{ $ml = $datas; //如果数据为数值 } return $ml; }
转载请注明:谷谷点程序 » Php 多维数组中的数据编码格式转换