我有一个描述层次结构的数据库表。以下是其结构:
在树形结构中,它看起来是这样的。这只是一个例子,可能会有更多的节点。
在php和mysql中,我提取所有这些数据并将其保存到数组中。
我想遍历该数组以确定例如特定级别中id的数量,并且我希望能够检索来自一个级别的所有节点。
我如何在php中实现呢?
编辑
这是我创建数组的方式:
。
id | pid | uid
1 5 2
2 2 3
3 2 4
4 2 6
5 3 7
在树形结构中,它看起来是这样的。这只是一个例子,可能会有更多的节点。
2
/ | \
3 4 6
/
7
在php和mysql中,我提取所有这些数据并将其保存到数组中。
我想遍历该数组以确定例如特定级别中id的数量,并且我希望能够检索来自一个级别的所有节点。
我如何在php中实现呢?
编辑
这是我创建数组的方式:
foreach ( $resultSet as $row ) {
$entry = array();
$entry['id'] = $row->id;
$entry['uid'] = $row->uid;
$entry['rid'] = $row->rid;
$entry['date'] = $row->date;
$entries [] = $entry;
}
现在我使用答案创建树的方法如下:
$tree = array();
foreach($entries as $key){
$this->adj_tree($tree, $key);
}
return $tree;
但是当我打印$tree时,输出了一些奇怪的内容。
Array ( [24] => Array ( [id] => 6 [uid] => 24 [rid] => 83 [date] => 2011-06-15
17:54:14 ) [] => Array ( [_children] => Array ( [0] => Array ( [id] => 6 [uid] => 24
[rid] => 83 [date] => 2011-06-15 17:54:14 ) [1] => Array ( [id] => 6 [uid] => 24 [rid] =>
83 [date] => 2011-06-15 17:54:14 ) ) ) )
实际上,应该有一个父级带有uid 24和两个子级带有rid 82和83
$tree[$row['pid']][] = $row
(而不是$tree[] = $row
),这样可以更轻松地检索任何节点的所有子节点。 - binaryLV