我正在尝试从一系列代表深度的字符串中提取,例如:
'foo/bar/x'
'foo/bar/baz/x'
'foo/bar/baz/x'
'foo/bar/lol/x'
x
我不关心的数字在哪里。我已经完成了拆分/
和循环,此时在PHP中我会做一些事情,比如检查我在循环中的位置(使用for (i=0; etc)
),然后用它来确定我的深度来构建一个输出数组,如:
output['foo']['bar'] = 1
output['foo']['bar']['baz'] = 2
output['foo']['bar']['lol'] = 1
问题是“深度”是动态的,可能只有 3/4 深(我可以通过对它们的值进行大量检查i
并单独处理它们来解释)或者说 10 或更深,在这种情况下某种递归函数可能是最好的。
我遇到了将字符串作为数组索引的问题,我需要使用字典,但您必须指定字典中的类型,这意味着您需要了解高级的深度(如果我是,请纠正我错误)在实例化字典对象时。
我猜攻击可能类似于调用递归函数,这样每次调用它时你传递i
指示深度,然后函数调用自身i
每次递减,直到它从输入字符串构建树的一部分,但它是什么存储我在 C# 中使用的我不确定的结构。
最终输出将是一个 CSV,我可以将其作为电子表格打开,如下所示:
Foo 0
|__Bar 1
|__Baz 2
|__Lol 1
也许解决方案的一个方向是使用纯 C# 数组并简单地将标题(例如foo
)存储在其中,将信息保留在数组索引之外,无论如何这可能是最佳实践。谢谢。