【发布时间】:2009-04-20 21:24:21
【问题描述】:
这其实是一个我已经解决的问题,但我怀疑可能有更好的解决方案。我有一个嵌套数组,它基本上表示类别树中所有节点的列表(无特定顺序):
Array(
[0] => Array(
[Category] => Array(
[id] => 49
[name] => Poster
)
[Child] => Array()
)
[1] => Array(
[Category] => Array(
[id] => 48
[name] => Sticker
)
[Child] => Array()
)
[2] => Array(
[Category] => Array(
[id] => 46
[name] => Hat
)
[Child] => Array()
)
[3] => Array(
[Category] => Array(
[id] => 45
[name] => Hoodie
)
[Child] => Array()
)
)
您会注意到$node['Child'] 在所有实例中都是一个空数组。这是因为我已经使用array_filter() 过滤掉所有非叶节点。尽管如此,我最终想要的是拥有一个叶节点的一维数组,如下所示:
Array(
[49] => Poster
[48] => Sticker
[46] => Hat
[45] => Hoodie
)
那么将第一个数组转换为第二个数组的最优雅的方法是什么?
或者,您也可以从一个包含叶节点和非叶节点的数组开始,并尝试修剪和重组数组。非叶节点的示例如下:
[7] => Array(
[Category] => Array(
[id] => 36
[name] => Merch
)
[Child] => Array(
[0] => Array(
[id] => 49
[name] => Poster
)
[1] => Array(
[id] => 48
[name] => Sticker
)
[2] => Array(
[id] => 40
[name] => Apparel
)
)
)
最后,我使用的是 CakePHP,所以使用 CakePHP 的 Set 类也是可以接受的。
【问题讨论】:
-
此内容是否源自 XML?
-
不,这只是 CakePHP 为数据库查询提供的数据结构。