1

多维数组中的iconv键有什么体面的方法吗?

我需要 json_encode 一个,但首先它必须是 unicode,对吧?那么,有什么黑客或什么的吗?在一些简单的尝试(array_walk_recursive?)之后,我尝试序列化整个数组,然后是iconv,然后是反序列化 - 但是所有标点符号(即括号等)都变得一团糟并且反序列化失败了。

先感谢您。

4

1 回答 1

0

在常见情况下,您无法实现这array_walk_recursive()一点 - 因为它不适用于那些键值是数组

任何包含数组的键都不会传递给函数。

而不是这个,您可以编写简单的手动演练:

function iconvKeys(array &$rgData, $sIn, $sOut)
{
   $rgData = array_combine(array_map(function($sKey) use ($sIn, $sOut)
   {
      return iconv($sIn, $sOut, $sKey);
   }, array_keys($rgData)), array_values($rgData));
   foreach($rgData as &$mValue)
   {
      if(is_array($mValue))
      {
         $mValue = iconvKeys($mValue, $sIn, $sOut);
      }
   }
   return $rgData;
}

$rgData = iconvKeys($rgData, 'UCS-2', 'UTF-8');//sample

-我还建议阅读iconv手册页以了解转换修饰符。

于 2013-09-30T14:44:27.207 回答