json php iconv keys in multidimensional array

xhv8bpkk  于 2023-11-20  发布在  PHP
关注(0)|答案(1)|浏览(114)

有没有什么像样的方法可以在多维数组中定义键呢?
我需要json_encode一个,但首先它必须是unicode,对吗?那么,有什么技巧或其他东西吗?在一些简单的重复操作(array_walk_recursive?)之后,我尝试序列化整个数组,然后iconv,然后反序列化-但是所有的标点符号(即括号等)都变得一团糟,反序列化失败了。

rt4zxlrg

rt4zxlrg1#

你不能用array_walk_recursive()在普通情况下实现这一点-因为它不适用于那些键,which values are arrays
任何保存数组的键都不会传递给函数。
相反,你可以编写简单的手动操作:

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

相关问题