仿PHP原生json_encode函数

20 篇文章 0 订阅
5 篇文章 0 订阅
$arr = [
    'a' => 'a',
    0 => 1,
    [
        1,
        'b' => 'b',
        [
            1,
            'c'
        ]
    ]
];

/**
 * 仿PHP原生json_encode函数
 * @param array $arr 数组
 * @return string 返回json字符串
 */
function json_encode2(array $arr): string
{
    $a = ''; // {}
    $b = ''; // []
    $c = 0;
    $d = true;

    foreach ($arr as $key => $value) {
        if ($key !== $c) $d = false;

        if (is_array($value)) {
            $tmp = json_encode2($value);
            $a .= ',"' . $key . '":' . $tmp;
            $b .= ',' . $tmp;
        } elseif (is_string($value)) {
            $a .= ',"' . $key . '":"' . $value . '"';
            $b .= ',"' . $value . '"';
        } elseif (is_int($value)) {
            $a .= ',"' . $key . '":' . $value;
            $b .= ',' . $value;
        } else {
            die('数组格式错误');
        }

        ++ $c;
    }

    if ($d) {
        $json_str = '[' . substr($b, 1) . ']';
    } else {
        $json_str = '{' . substr($a, 1) . '}';
    }

    return $json_str;
}

v('系统函数json_encode:' . json_encode($arr));
v('自定义函数json_encode2:' . json_encode2($arr));

以下为运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值