多维数组中的 php iconv 键

问题描述 投票:0回答:1

有没有什么好的方法可以在多维数组中使用 iconv 键?

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

php json encode iconv
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 手册页以了解转换修饰符。

© www.soinside.com 2019 - 2024. All rights reserved.