0

我有一个这样的数据表:

id   |   item   |   parent_id
1       item 1          0
2       item 2          0
3       item 3          2
4       item 4          3
5       item 5          1
...

id是自动递增的,并且反映parent_idid左侧。您以前可能遇到过这样的数据库表设计。

parent_id如您所见,它不是连续的。

我需要将此表数据以所有父母都成为潜在标题的格式放入数组中,而他们的孩子在下面。

所以我正在寻找这样的结构:

Item 1
    Item 5
Item 2
    Item 3
        Item 4
etc

PHP我需要一个可以显示上述内容的数组结构。但我有一个严重的脑放屁!

谁能帮我解决数组结构?

4

2 回答 2

0

首先,我建议您阅读这篇文章,它对分层结构化数据非常有用,并且有可用的查询可以帮助您获取父母、孩子等……等等。

现在回答你的问题,试试这个:

$result = array();

while($data = mysql_fetch_assoc($query)) {
    $id = $data['id'];
    $parent = $data['parent_id'];
    $keys = array_keys($result);
    if(in_array($parent, $keys)) {
        $result[$parent] = array_merge($result[$parent], array($id => $data['item']));
    } else {
        $result = array_merge($result, array($id => $data['item']));
    }
}
于 2013-10-31T21:21:29.050 回答
0

你可以这样写:

$a = Array(item1 => Array(item5), item2 => Array(item3 => Array(item4)))

或者

$a = Array(item1 => parentid, item2 => parentid2 ....)

在第一个示例中,一个项目是存储在 Array 中的所有 ist 子项的键,在另一个示例中,所有项目都使用项目键和 int 值存储。这个 int 值是父项的键。你使用哪种方法取决于你想用这个数组做什么。也许我的两个想法都不足以满足您的需求。如果是这样的话,告诉我你需要什么。

于 2013-10-31T21:11:55.817 回答