前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP 中 json_encode 处理数组的返回信息为 NULL 时的处理

PHP 中 json_encode 处理数组的返回信息为 NULL 时的处理

作者头像
泥豆芽儿 MT
发布2021-09-06 10:06:53
2.3K0
发布2021-09-06 10:06:53
举报
  • 背景 今天在处理消息队列逻辑时,因为连接不上服务器,返回的错误信息中存在中文乱码 以前的处理方式,就是对返回的信息,使用 json_encode() 编码处理,记录到 错误日志中,方便后期问题排查 但是,此时发现,json_encode() 返回的是 false|NULL ,无法满足我的需求 通过网上的建议,找到一种解决方案 :【PHP json_decode/json_encode 中文内容为NULL或乱码】
  • 源码
代码语言:javascript
复制
/**************************************************************
 *
 *    处理因为数组元素中含有中文乱码时的问题
 *    @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 框架下的处理方式,调用如下:
代码语言:javascript
复制
 Log::error('导出任务队列添加失败:'.json_encode_mz_urlencode($error));
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档