【发布时间】:2012-08-12 10:44:48
【问题描述】:
如何使用 php 将 array#1 转换为 array#2 结构?
第一个数组是对生物体列表的数据库查询结果,每个生物体都按其目、科、属、种进行分类。 Hierarchically Species 是各种 Genus 的子分类,Genus 分类是各种 Families 的子分类等。
在命名空间方面,你可以这样解读:
索引项[0] ---> Hemiptera.Miridae.Kanakamiris
索引项[1] ---> Hemiptera.Miridae.Neophloeobia.incisa
array#1的key之间有一种父子关系,如下:
- “Rank_Order”值是“Rank_Family”值的父项
- “Rank_Family”值是“Rank_Genus”值的父代
- “Rank_Genus”值是“Rank_Species”值的父代
数组#1:
Array
(
[0] => Array
(
['Rank_Order'] => 'Hemiptera'
['Rank_Family'] => 'Miridae'
['Rank_Genus'] => 'Kanakamiris'
['Rank_Species'] => ''
)
[1] => Array
(
['Rank_Order'] => 'Hemiptera'
['Rank_Family'] => 'Miridae'
['Rank_Genus'] => 'Neophloeobia'
['Rank_Species'] => 'incisa'
)
[2] => Array
(
['Rank_Order'] => 'Hemiptera'
['Rank_Family'] => 'Noridae'
['Rank_Genus'] => 'Canelbia'
['Rank_Species'] => 'Arissa'
)
)
以下数组是我需要的数组结构: 数组#2:
Array(
[name] => 'Hemiptera'
[children] => Array(
[0] => Array(
[name] => 'Miridae'
[children] => Array(
[0] => Array(
[name] => 'Kanakamiris'
[children] => Array(
)
)
[1] => Array(
[name] => 'Neophloeobia'
[children] => Array(
[0] => Array(
[name] => 'incisa'
[children] => Array(
)
)
)
)
)
)
[1] => Array(
[name] => 'Noridae'
[children] => Array(
[0] => Array(
[name] => 'Canelbia'
[children] => Array(
[0] => Array(
[name] => 'Arissa'
[children] => Array(
)
)
)
)
)
)
)
)
我在堆栈溢出中看到了类似的问题,但在我的情况下无法使用它们。例如。 php-reorder-array-to-reflect-parent-id-hierarchy
【问题讨论】:
-
改变的动机是什么,为什么不使用 OOP?
-
您说类似的问题不适用于您的情况,但没有向我们提供有关您的特定数组结构的任何详细信息... 您是什么问题??
-
我想获取第一个数组并从中创建第二个数组。我将两个代码块之间的语句编辑为一个问题,道歉
-
这样做的动机是第二个数组是我在将数组编码为 JSON 并将其用于其他目的之前需要的结构
-
不清楚第一个数组如何转换为第二个数组,因为键名不同。还有,为什么不直接转成json呢,为什么还要经过嵌套数组的另一个阶段呢?
标签: php arrays hierarchy taxonomy