题目:把字符串嵌套关系转换成数组,字符串只包含成对中括号、数字和逗号
字符串:(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]

用PHP解析类JSON字符串为数组的实现的更多相关文章

  1. JSON.parse() 方法解析一个JSON字符串

    JSON.parse() 方法解析一个JSON字符串,构造由字符串描述的JavaScript值或对象.可以提供可选的reviver函数以在返回之前对所得到的对象执行变换. 语法EDIT JSON.pa ...

  2. python解析复杂json字符串

    因为项目需要,公司领导对提出了接口测试的要求,因此作为一个测试人员,我第一时间就想到了jmeter这个利器,前面文章也有说明过怎么用jmeter做http协议的接口测试,这里我不再做讲解,此篇主要讲解 ...

  3. 前端(十四)—— JavaScript常用类:Number、Date类、字符串、数组、Math类、正则

    JS常用类:Number类.Date类.Math类.字符串.数组.正则 一.Number 1.常用数字 整数:10 小数:3.14 科学计数法:1e5 | 1e-5 正负无穷:Infinity | - ...

  4. Gson解析复杂JSON字符串的两种方式

    JSON解析可以使用的库: JSONObject(源自Android官方). Gson(源自Google). Jackson(第三方开源库). FastJSON(第三方开源库). 本文例子使用Goog ...

  5. php json字符串转为数组或对象

    从网上查到的方法是 用get_object_vars 把类类型转换成数组 然后在用foreach  遍历即可 $array = get_object_vars($test); $json= '[{&q ...

  6. json 字符串包含数组转换为object对象是报异常java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to

    前台传到后台的json字符串 前台实现这种格式json字符串方式: function contentFun(){ respType = respTypeFun(); return "{\&q ...

  7. c# json字符串转数组

    JArray jo = (JArray)JsonConvert.DeserializeObject("这里是json字符串");

  8. 解析嵌套json字符串,一个json字符串中嵌套另一个json字符串

    我现在有一个字符串是这样: { "msg": { ", "attrName": "sensorData", "trans ...

  9. (Hive)史上最难解析的json字符串解析出来了!!

    首先说下解析的数据如下: {"username":"king","actionInfo":{"id":1,"a ...

随机推荐

  1. list中的中文转换编码显示

    for i in range(1,sheet.nrows): row=sheet.row_values(i,0,sheet.ncols) row=str(row).replace('u\'','\'' ...

  2. zigbee学习之路(十二):zigbee协议原理介绍

    一.前言 从今天开始,我们要正式开始进行zigbee相关的通信实验了,我所使用的协议栈是ZStack 是TI ZStack-CC2530-2.3.0-1.4.0版本,大家也可以从TI的官网上直接下载T ...

  3. [ASM C/C++] C语言函数的可选性自变量

        函数的可选性自变量  C语言允许定义自变量数量可变的函数,称为variadic函数.variadic函数需要固定数目的强制性自变量,后面是数量可变的可选性自变量. 也就是说必须至少有一个强制性 ...

  4. libevent源码分析:event_assign、event_new

    在libevent中,获取event类型对象的方法有两种,event_assign.event_new 1.event_assign() /** Prepare a new, already-allo ...

  5. 瘋子C语言笔记(结构体/共用体/枚举篇)

    (一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student { int num; char name ...

  6. iOS上传文件代码,自定义组装body

    以下代码为上传文件所用代码,简单方便,搞了好久,终于知道这么简单的方式来上传. 其它类库也就是把这几句代码封装的乱七八糟得,让你老久搞不懂原理.不就是在body上面加点字符串,body下面加点字符串, ...

  7. 首师大附中科创教育平台 我的刷题记录 3120 LJX的校园:入学典礼

    今天给大家献上"C"级题:LJX的校园:入学典礼!! 试题编号:3120       LJX的校园:入学典礼 难度级别:C: 运行时间限制:45ms: 运行空间限制:256000K ...

  8. view animation

    动画分为 帧动画    drawable animation 补间动画 view animation 属性动画  property animation 作用效果: 加载信息时loading动画 act ...

  9. 我的git学习

    当遇到不想commit的,而status已经现实出来了,可以使用 git rm -r --cached "fine name or 文件夹" 出现   Git – fatal: U ...

  10. 剑指offer七:两个链表的第一个公共结点

    输入两个链表,找出它们的第一个公共结点. import java.util.*; public class Solution { public ListNode FindFirstCommonNode ...