今天使用json_encode 把一个数组转换成json数据,echo处理的时候,显示为null。去查了php手册。
该函数只能接受 UTF-8 编码的数据。
在网上搜了下,找到了解决方法。
1 <?php 2 3 /************************************************************** 4 * 5 * 使用特定function对数组中所有元素做处理 6 * @param string &$array 要处理的字符串 7 * @param string $function 要执行的函数 8 * @return boolean $apply_to_keys_also 是否也应用到key上 9 * @access public 10 * 11 *************************************************************/ 12 function arrayRecursive(&$array, $function, $apply_to_keys_also = false) 13 { 14 static $recursive_counter = 0; 15 if (++$recursive_counter > 1000) { 16 die('possible deep recursion attack'); 17 } 18 foreach ($array as $key => $value) { 19 if (is_array($value)) { 20 arrayRecursive($array[$key], $function, $apply_to_keys_also); 21 } else { 22 $array[$key] = $function($value); 23 } 24 25 if ($apply_to_keys_also && is_string($key)) { 26 $new_key = $function($key); 27 if ($new_key != $key) { 28 $array[$new_key] = $array[$key]; 29 unset($array[$key]); 30 } 31 } 32 } 33 $recursive_counter--; 34 } 35 36 /************************************************************** 37 * 38 * 将数组转换为JSON字符串(兼容中文) 39 * @param array $array 要转换的数组 40 * @access public 41 * 42 *************************************************************/ 43 function JSON($array) { 44 arrayRecursive($array, 'urlencode', true); 45 $json = json_encode($array); 46 return urldecode($json); 47 } 48 49 //使用方法 echo JSON($array);