php递归多维数组为缩进列表,php – 缩进列表到多维数组
标签:php
我很惊讶没有在SO(或互联网上的其他地方)找到答案.它涉及一个嵌套的缩进列表,我想根据缩进的级别将其转换为多维数组.
举个例子,这里有一些示例输入:
Home
Products
Product 1
Product 1 Images
Product 2
Product 2 Images
Where to Buy
About Us
Meet the Team
Careers
Contact Us
理想情况下,我想将其提供给一些(递归?)函数并获得以下输出:
array(
'Home' => array(),
'Products' => array(
'Product 1' => array(
'Product 1 Images' => array(),
),
'Product 2' => array(
'Product 2 Images' => array(),
),
'Where to Buy' => array(),
),
'About Us' => array(
'Meet the Team' => array(),
'Careers' => array(),
),
'Contact Us' => array(),
);
我对执行这样一项任务所需的逻辑感到困惑,所以任何帮助都会受到赞赏.
解决方法:
由于目前还不清楚你是想尝试从一些给定的结构(html-dom)或从给定的字符串中读取纯文本,我认为它是你试图解析的字符串.如果是这样,请尝试:
$list =
'Home
Products
Product 1
Product 1 Images
Product 2
Product 2 Images
Where to Buy
About Us
Meet the Team
Careers
Contact Us';
function helper($list, $indentation = ' ') {
$result = array();
$path = array();
foreach (explode("\n", $list) as $line) {
// get depth and label
$depth = 0;
while (substr($line, 0, strlen($indentation)) === $indentation) {
$depth += 1;
$line = substr($line, strlen($indentation));
}
// truncate path if needed
while ($depth < sizeof($path)) {
array_pop($path);
}
// keep label (at depth)
$path[$depth] = $line;
// traverse path and add label to result
$parent =& $result;
foreach ($path as $depth => $key) {
if (!isset($parent[$key])) {
$parent[$line] = array();
break;
}
$parent =& $parent[$key];
}
}
// return
return $result;
}
print_r(helper($list));
标签:php
来源: https://codeday.me/bug/20190927/1823419.html
php递归多维数组为缩进列表,php – 缩进列表到多维数组相关推荐
- JAVA(4)学习笔记:JVM虚拟机上的栈、大驼峰命名法和小驼峰命名法、实参和形参、重载方法、调用栈、递归练习(汉诺塔+斐波那契数列)、数组的定义、数组的初始化、增强for循环。
接上次的博客:JAVA学习(3)--知识整理以及一些简单程序(猜数字游戏.求各种自幂数.求出一个数字的二进制位中1的个数.获取一个数二进制序列中所有的偶数位和奇数位.求公约数的多种实现方式.输入密码程 ...
- java多维数组按照某一列排序,PHP实现二维数组按某列进行排序的方法
本文实例讲述了PHP实现二维数组按某列进行排序的方法.分享给大家供大家参考,具体如下: /* * 二维数组 按某列排序 * array_multisort($arr1,$arr2) * 手册 例子如下 ...
- [转载] python字符串数组字典_Python:字符串、列表、元组、字典
参考链接: Python字符串| ascii_uppercase 字符串: 所有方法都修改不了字符串的值,字符串还是原值:但可以重新赋值:使用字符串方法有返回值 循环字符串的用法: 字符串方法: Na ...
- R语言基础题及答案(一)——数组、数据框、list列表的创建及部分基础问题
数组.数据框.list列表的创建及部分基础问题 数列 题-1 请构造如下数列:1,2,3,4,5,6,7,8 1:8 seq(from=1,to=8) [1] 1 2 3 4 5 6 7 8 [1] ...
- Python二维列表转换为一维列表
Python二维列表转换为一维列表 Python二维数组转换为一维数组 二维转一维 # 第一种写法 拆解的写法a = [] ab = [[1,2,3], [5,8], [7,8,9]] for ite ...
- python 列表去重(数组)的几种方法_python 列表去重(数组)的几种方法
在抓取页面图片时,为避免重复抓取,将抓取的img结果(结果集是list类型的)通过集合去重.这里总结了下网上搜集到的几种方法. 一.方法1 代码如下 复制代码 ids = [1,2,3,3,4,2,3 ...
- 机器学习之数学基础(二)~数组、向量、矩阵、向量空间、二维矩阵
1. 概述 在学习机器学习(machine learning)或模式识别(pattern recognition)过程中,我经常会困惑于向量.数组和矩阵这三种数据结构,而在学习张学工教授<模式识 ...
- c语言多维数组指针地址讲解,C语言入门之多维数组的指针变量
一.多维数组地址的表示方法 设有整型二维数组a[3][4]如下: 0 1 2 3 4 5 6 7 8 9 10 11 设数组a的首地址为1000,各下标变量的首地址及其值如图所示. 在前面曾经介绍过, ...
- c语言随机生成整数存放一维数组_C语言入门教程(十)多维数组
作业: 1.编写程序从键盘得到一个非负数,统计出每个数字在各数位上出现的次数并把结果打印在屏幕上 一.变长数组 C99规范中允许使用变长数组 声明变长数组时可以使用变量表示存储区个数 如果多次运行这个 ...
最新文章
- VMware workstation虚拟机不能联网解决方法
- 淘宝直播的电商互动之路
- 【数据结构与算法】之深入解析“石子游戏II”的求解思路与算法示例
- c语言调用labview方法,LabVIEW与C语言接口的方法
- MYSQL存储过程初步认知
- linux连不上网 ens33,如何解决Linux 系统下 ifconfig 命令无网络接口 ens33
- linux内核版本2 3 20,redhat9装配RTLINUX-3.2,内核版本为Kernel-2.4.23
- 汽车维修企业管理【10】
- 微信小程序:二维码生成器,输入信息生成二维码,调用相机扫描二维码,获取信息
- CGROUP CFS 调度中的 period,burst 概念
- 2022年最新二手苹果手机价格表
- 北京计算机暑期培训,北京暑期计算机培训心得体会.doc
- 闲置手机不要换锅换盆,你会后悔的
- PS渐变羽化制作单车
- 20210507新版友价框架制作江雀网店交易天猫淘宝京东拼多多唯品会网店转让送手机版系统
- 一页纸说清楚“什么是深度学习?”
- C语言编写Johnson-Trotter算法生成排列
- 开发高性能的Socket服务器
- 数据仓库系列--维度表技术
- LPDDR5 JEDEC
热门文章
- 记录webpack的source map使用详细说明
- Perfect World
- 信息系统开发平台OpenExpressApp - 功能权限
- 【C/C++】知识点系统复习 (第一周)
- spring-boot-2.0.3之quartz集成,不是你想的那样哦!
- cassandra连不上,报Stop listening for CQL clients, Failed managing commit log segments
- php数组array_push()和array_pop()以及array_shift()函数
- Java Class Loader Retrospect
- border 外边框
- 关于Java空指针的控制(转)