本文主要是介绍PHP 中 json_encode 处理数组的返回信息为 NULL 时的处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
-
背景
今天在处理消息队列逻辑时,因为连接不上服务器,返回的错误信息中存在中文乱码
以前的处理方式,就是对返回的信息,使用json_encode()
编码处理,记录到 错误日志中,方便后期问题排查
但是,此时发现,json_encode()
返回的是false|NULL
,无法满足我的需求通过网上的建议,找到一种解决方案 :
【PHP json_decode/json_encode 中文内容为NULL或乱码】
-
源码
/**************************************************************** 处理因为数组元素中含有中文乱码时的问题* @param string &$array 要处理的字符串* @param string $function 要执行的函数* @return boolean $apply_to_keys_also 是否也应用到key上* @access public**************************************************************/
function arrayRecursive(&$array, $function = 'urlencode', $apply_to_keys_also = true)
{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]);}}}
}/*** 处理因为数组元素中含有中文乱码问题时,json_encode优化方法* @param $array* @return string*/
function json_encode_mz_urlencode($array){arrayRecursive($array);$json = json_encode($array);return urldecode($json);
}
- 以我在
ThinkPHP5
框架下的处理方式,调用如下:
Log::error('导出任务队列添加失败:'.json_encode_mz_urlencode($error));
这篇关于PHP 中 json_encode 处理数组的返回信息为 NULL 时的处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!