多维数组中的iconv键有什么体面的方法吗?
我需要 json_encode 一个,但首先它必须是 unicode,对吧?那么,有什么黑客或什么的吗?在一些简单的尝试(array_walk_recursive?)之后,我尝试序列化整个数组,然后是iconv,然后是反序列化 - 但是所有标点符号(即括号等)都变得一团糟并且反序列化失败了。
先感谢您。
在常见情况下,您无法实现这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手册页以了解转换修饰符。