您的位置:首页 > 编程语言 > PHP开发

php将数组转化为json数据遇到的问题解决

2014-04-16 21:30 381 查看
1、php可以直接用json_encode($array);来将数据转换为json数据,但仅限于utf8的编码

2、不是utf8编码怎么办呢

可以用urldecode()来处理数组里面的数据

下面是网上介绍的方法:

function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
{
foreach ($array as $key => $value) {
if (is_array($value)) {

arrayRecursive($array[$key], $function, $apply_to_keys_also);
} else {
$array[$key] = $function($value);
}

if ($apply_to_keys_also && is_string($key)) {
$new_key = $function($key);
if ($new_key != $key) {
$array[$new_key] = $array[$key];
unset($array[$key]);
}
}
}
}
function JSON($array) {
arrayRecursive($array, 'urlencode', true);
$json = json_encode($array);
return urldecode($json);
}


3、但是我遇到了一个问题,我的数组的三维的,这个方法是递归调用的,我在服务器上测试了,页面没有响应,最多只能二维的是数组

所以回归原问题,直接将数组的编码转换为utf8,直接用json_encode($array);来将数据转换为json数据,

数组编码的转换方法网上有很多

如:

function mult_iconv($in_charset,$out_charset,$data)
{
if(substr($out_charset,-8)=='//IGNORE'){
$out_charset=substr($out_charset,0,-8);
}
if(is_array($data)){
foreach($data as $key => $value){
if(is_array($value)){
$key=iconv($in_charset,$out_charset.'//IGNORE',$key);
$rtn[$key]=mult_iconv($in_charset,$out_charset,$value);
}elseif(is_string($key) || is_string($value)){
if(is_string($key)){
$key=iconv($in_charset,$out_charset.'//IGNORE',$key);
}
if(is_string($value)){
$value=iconv($in_charset,$out_charset.'//IGNORE',$value);
}
$rtn[$key]=$value;
}else{
$rtn[$key]=$value;
}
}
}elseif(is_string($data)){
$rtn=iconv($in_charset,$out_charset.'//IGNORE',$data);
}else{
$rtn=$data;
}
return $rtn;
}


1、php可以直接用json_encode($array);来将数据转换为json数据,但仅限于utf8的编码

2、不是utf8编码怎么办呢
可以用urldecode()来处理数组里面的数据

下面是网上介绍的方法:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: