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

WBOY
Freigeben: 2016-06-23 14:12:40
Original
1120 Leute haben es durchsucht

本帖最后由 wang23412 于 2013-06-09 17:05:27 编辑

PHP JSON 中文 编码

我用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--;}
Nach dem Login kopieren

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

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

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

回复讨论(解决方案)

咳咳 你可以把‘$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);

呃。。好吧。。是传进来的参数。。我低端了……

定义
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);

这么看来这两个函数的作用就是先把数组中的每个值urlencode一下,然后json_encode转换成json格式,最后再把json格式的字符串urldecode。谢谢啦。真是看代码看得脑袋都转不过弯了

这个函数是针对 gbk 编码数据的
对于 utf-8 的数据,应该是不需要这样做的

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage