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

    Ctrl+D : 选择单词,重复可增加选择下一个相同的单词Ctrl+F : 查找内容Ctrl+G : 跳转到指定行Ctrl+H : 替换    Ctrl+J : 合并行(已选择需要合并的多行时)Ctr ...

  2. 。net 文件依赖缓存

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  3. 20161013001 DataGridView 数据转 DataTable

    DataTable dt2 =  GetDgvToTable(Form_CY_ProjectRequirements_D);    MessageBox.Show( dt2.Rows.Count.To ...

  4. ZJOI2007矩阵游戏

    题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作: 行交 ...

  5. tomcat 7+ 启动慢 熵池阻塞变慢详解

    原因: Tomcat 7/8都使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom类产生安全随机类SecureRan ...

  6. item布局里有button之类的子控件时,会截获焦点

    需要以上问题时,网上查了很多,结果都是使用android:descendantFocusability属性,设为blocksDescendants就ok了,(具体不详叙述) 可是我给item的根布局设 ...

  7. C++ STL之vector用法总结

    介绍 vector是表示可变大小数组的序列容器. 就像数组一样,vector也采用的连续存储空间来存储元素.也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效.但是又不像数组,它的大 ...

  8. Servlet开发详解

    一.Servlet简介 Servlet是sun公司提供的一门用于动态web资源的技术 sun公司在其API中提供了一个Servlet接口,用户若想开发一个动态web资源,需要完成两个步骤: 编写一个J ...

  9. 巧用CSS3伪类选择器自定义checkbox和radio的样式

    由于原生的checkbox和radio的样式太简陋了,在设计页面的时候,设计师往往会设计自己的checkbox和radio样式.一半情况下,为了适应各个浏览器的兼容性,我们都会用其他的元素替代原生的c ...

  10. Mac 安装 MySQL

    在 Mac 下用 Homebrew 安装 MySQL, 网上的教程倒是很多,不过大多数都很默契地雷同.如果稍有点定制要求,就无从下手了. 我先也不免俗,从基本的开始: 一.首先安装 Homebrew ...