有没有什么像样的方法可以在多维数组中定义键呢?我需要json_encode一个,但首先它必须是unicode,对吗?那么,有什么技巧或其他东西吗?在一些简单的重复操作(array_walk_recursive?)之后,我尝试序列化整个数组,然后iconv,然后反序列化-但是所有的标点符号(即括号等)都变得一团糟,反序列化失败了。
rt4zxlrg1#
你不能用array_walk_recursive()在普通情况下实现这一点-因为它不适用于那些键,which values are arrays:任何保存数组的键都不会传递给函数。相反,你可以编写简单的手动操作:
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
字符串
1条答案
按热度按时间rt4zxlrg1#
你不能用
array_walk_recursive()
在普通情况下实现这一点-因为它不适用于那些键,which values are arrays:任何保存数组的键都不会传递给函数。
相反,你可以编写简单的手动操作:
字符串