zoukankan      html  css  js  c++  java
  • 用PHP解析类JSON字符串为数组的实现

    题目:把字符串嵌套关系转换成数组,字符串只包含成对中括号、数字和逗号
    字符串:(1,(1,2,(1,(1,2,(1)),3)),3,(1,(1,2,((1((1,(1,2,(1,2,3),4,5),3),2)),2)),((1,2,3),2,3),4,5),5)

    程序:

    $string = '(1,(1,2,(1,(1,2,(1)),3)),3,(1,(1,2,((1,((1,(1,2,(1,2,3),4,5),3),2)),2)),((1,2,3),2,3),4,5),5)';
    
    $result = $previous = [];
    $current = $number = null;
    
    $i = 0;
    while ( isset($string[$i]) ) {
        $value = $string[$i];
    
        switch ($value) {
            case '(':
                if ( is_null($current) ) {
                    $current = &$result;
                } else {
                    $previous[] = &$current;
                    $current[] = [];
                    $current = &$current[count($current) - 1];
                }
                break;
            case ')':
                if ( !is_null($number) ) {
                    $current[] = intval($number);
                    $number = null;
                }
    
                $last = count($previous) - 1;
                $current = &$previous[$last];
                array_pop($previous);
                break;
            case ',':
                if ( !is_null($number) ) {
                    $current[] = intval($number);
                    $number = null;
                }
                break;
            default:
                $number .= $value;
                break;
        }
    
        $i++;
    }
    
    echo json_encode($result);

    输出结果:[1,[1,2,[1,[1,2,[1]],3]],3,[1,[1,2,[[1,[[1,[1,2,[1,2,3],4,5],3],2]],2]],[[1,2,3],2,3],4,5],5]

  • 相关阅读:
    jQ插件开发规范(转)
    一个圆环形状的进度条。
    [转载]jQuery 图表插件 jqChart 使用
    作业.mp4
    嘣嘣嘣嘣嘣哥TnT
    我对GIT的认识`
    git的理解
    文章读后感
    团队作业7
    团队作业6
  • 原文地址:https://www.cnblogs.com/caly/p/5786472.html
Copyright © 2011-2022 走看看