最初の方法
$data = eval('return '.iconv('gbk','utf-8',var_export($data,true)).';');
ここでは var_export関数は、変数の文字列表現を出力または返すことができます。この関数は、関数に渡された変数に関する構造情報を返します。返される表現が正当な PHP コードである点を除けば、var_dump()
と似ています。
関数の 2 番目のパラメーターを TRUE に設定することで、変数の表現を返すことができます。
次に、この機能を使用して配列を文字列に変換し、次に iconv を使用して、それを配列に復元するために eval 関数を使用します。今度は結果が正しく表示されます。
第二の方法
< ?phpclass 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);?>