Php 深度嵌套数组/对象的含义,以及建议使用的语言/数据模型
我已经开发出生成单个epic阵列的需求。一开始看起来相当标准,比如:Php 深度嵌套数组/对象的含义,以及建议使用的语言/数据模型,php,arrays,json,object,javascript-objects,Php,Arrays,Json,Object,Javascript Objects,我已经开发出生成单个epic阵列的需求。一开始看起来相当标准,比如: epic = { 0 : "epic parent" 1 : { 0 : "bob child", 1 : { 0 : "mary grand-child", 1 : { 0 : "jane great-grand-child", etc. (e.g. down to
epic = {
0 : "epic parent"
1 : {
0 : "bob child",
1 : {
0 : "mary grand-child",
1 : {
0 : "jane great-grand-child",
etc. (e.g. down to "john (great*1000)-grand-child")
}
},
2 : {
etc.
}
},
2 : {
etc.
}
etc.
}
但问题是,它有潜力发展到巨大的深度。很可能深入到数百甚至数千层,当然也可能非常广泛。原因是,任何一个新条目都可以作为任何现有点的直接子条目添加,无论是epic[1]
还是epic[1][21][41][661][3][72][8543][22][1][2][等。]
我的问题是,像这样构建一个“史诗”阵列意味着什么?不同语言处理大/深数组的方式是否存在差异?有些语言比其他语言更适合这种情况吗?如何最好地存储此阵列
举例说明这一点的最简单方法可能是想象一下,将一个完整的家谱存储在一个数组中,从一个人开始,数百代人(还可以想象每个“父母”可以有无限多个孩子,而不是2.5个:)
目前我对数组的唯一接触是php和javascript,因此它们将是一个很好的起点。这是一个非常普遍的问题,无法以正确的方式回答。当然,不同的语言处理数组的方式不同,php使用hashmaps(例如,与c/c++相比速度非常慢),javascript AFAIK使用普通数组(因此,它们的性能应该与c/c++相当),java使用普通数组、hashmaps、LinkedList等等 第二部分是关于存储这样的数据(我假设是数据库),在关系数据库(mysql)中,您可以将它们存储为树(参见),或者您可以通过2个表(person,link table)进行多对多链接 在任何情况下-您的问题的主要答案将在深入调查您计划执行的操作时找到-这将定义您应该使用的数据结构以及将此结构存储到磁盘的方式 如果我们假设“家谱”——你想用它做什么?只是显示,或者搜索,或者一些统计结果(比如这个家庭每年出生多少个儿子?),也许我们需要计算两个不同的人(比如表亲)之间的关系,等等 注意:不要忘记,一个孩子可以有两个以上的父母(如果是继父和神父)