第一種方式
$data = eval('return '.iconv('gbk','utf-8',var_export($data,true)).';'); 在這里var_export函數可以輸出或返回一個變量的字符串表示。此函數返回關於傳遞給該函數的變量的結構信息,它和 var_dump()
類似,不同的是其返回的表示是合法的 PHP 代碼。
可以通過將函數的第二個參數設置為 TRUE,從而返回變量的表示。
下面就利用這一特性將數組轉化為字符串然后再iconv接着再用eval函數將其還原為數組。這次結果正確顯示了。
第二種方式
- < ?php
- class arrayiconv
- {
- static protected $in;
- static protected $out;
- /**
- * 靜態方法,該方法輸入數組並返回數組
- *
- * @param unknown_type $array 輸入的數組
- * @param unknown_type $in 輸入數組的編碼
- * @param unknown_type $out 返回數組的編碼
- * @return unknown 返回的數組
- */
- static public function Conversion($array,$in,$out)
- {
- self::$in=$in;
- self::$out=$out;
- return self::arraymyicov($array);
- }
- /**
- * 內部方法,循環數組
- *
- * @param unknown_type $array
- * @return unknown
- */
- static private function arraymyicov($array)
- {
- foreach ($array as $key=>$value)
- {
- $key=self::myiconv($key);
- if (!is_array($value)) {
- $value=self::myiconv($value);
- }else {
- $value=self::arraymyicov($value);
- }
- $temparray[$key]=$value;
- }
- return $temparray;
- }
- /**
- * 替換數組編碼
- *
- * @param unknown_type $str
- * @return unknown
- */
- static private function myiconv($str)
- {
- return iconv(self::$in,self::$out,$str);
- }
- }
- $b=array("測試"=>array("測試"=>"測試","測試"=>"測試","測試"=>array("測試"=>"測試")),"fasdf"=>"測試","測試"=>"測試 ");
- $a =arrayiconv::Conversion($b,"utf-8","gb2312");
- print_r($a);
- ?>