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

最新文章

  1. dot
  2. jquery的load和get的区别
  3. JS中toFixed()方法的问题及解决方案
  4. js高仿QQ消息列表左滑功能
  5. linux web服务器必需的库文件
  6. 兼容PHP和Java的des加密解密代码分享
  7. POJ 3177 Redundant Paths - from lanshui_Yang
  8. ORM的实现
  9. 【JAVA零基础入门系列】Day15 对象的比较
  10. Java相关错误
  11. c# ?? 和?
  12. redis pipeline 独占链接
  13. CSS基本知识(慕课网)
  14. 【windows核心编程】HideProcess
  15. asp.net core 中的SignalR与web前端进行实时通信
  16. 发布web应用程序是出现unsafe code
  17. rename系统调用的实现浅析
  18. 解决SpringMVC中文乱码
  19. BZOJ 4012 【HNOI2015】 开店
  20. github 's usage

热门文章

  1. Spring源代码解析
  2. HDU 1072 Nightmare
  3. int型、long型和long long型
  4. IOS textField(textview)字数判断
  5. 学习Git的总结与体会
  6. MySQL为什么需要一个主键
  7. Mac Mail PGP Setup 如何在苹果电脑上设置安全邮件 良好隐私密码法(英语:Pretty Good Privacy,缩写为PGP)
  8. sql server CTE递归使用测试
  9. 后台返回国标码,怎么转化为JSON
  10. 自己常用JS和JQ 函数