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()来处理数组里面的数据
下面是网上介绍的方法: