当前位置:Gxlcms > PHP教程 > php数组转json展示中文的一句代码,求解释

php数组转json展示中文的一句代码,求解释

时间:2021-07-01 10:21:17 帮助过:6人阅读

php数组转json显示中文的一句代码,求解释
本帖最后由 wang23412 于 2013-06-09 17:05:27 编辑

我用php把数组转成json格式传给jquery 时发现中文会变成奇怪的编码。于是在网上找了下解决方法,看到很多人用下面两个函数解决了:
function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
{
static $recursive_counter = 0;
if (++$recursive_counter > 1000) {
die('possible deep recursion attack');
}
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]);
}
}
}
$recursive_counter--;
}

function JSON($array) {
arrayRecursive($array, 'urlencode', true);
$json = json_encode($array);
return urldecode($json);
}

我测试了下确实能解决问题,于是仔细研究了下代码,发现如下这句代码不知道是什么意思:
$array[$key] = $function($value);

我在这句话前后分别输出$array[$key]看下值,发现这句话把中文变成了一串编码。
求各位大侠解释下$function($value)是什么意思。 PHP JSON 中文 编码

分享到:


------解决方案--------------------
咳咳 你可以把‘$function’替换成传进去才参数$function的值再看
------解决方案--------------------
定义
function arrayRecursive(&$array, $function, $apply_to_keys_also = false) 中
$array[$key] = $function($value);

调用
arrayRecursive($array, 'urlencode', true);

所以 $array[$key] = $function($value);
就是 $array[$key] = urlencode($value);

人气教程排行