用PHP解析类JSON字符串为数组的实现
2024-10-18 10:20:49
题目:把字符串嵌套关系转换成数组,字符串只包含成对中括号、数字和逗号
字符串:(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]
最新文章
- dot
- jquery的load和get的区别
- JS中toFixed()方法的问题及解决方案
- js高仿QQ消息列表左滑功能
- linux web服务器必需的库文件
- 兼容PHP和Java的des加密解密代码分享
- POJ 3177 Redundant Paths - from lanshui_Yang
- ORM的实现
- 【JAVA零基础入门系列】Day15 对象的比较
- Java相关错误
- c# ?? 和?
- redis pipeline 独占链接
- CSS基本知识(慕课网)
- 【windows核心编程】HideProcess
- asp.net core 中的SignalR与web前端进行实时通信
- 发布web应用程序是出现unsafe code
- rename系统调用的实现浅析
- 解决SpringMVC中文乱码
- BZOJ 4012 【HNOI2015】 开店
- github 's usage