我有一个这样的数据库:
id text parent
1 Parent 1 0
2 Child of 1 1
3 Sibling 1
4 Another Parent 0
5 A first child 4
所以我试图捕捉我列出父母的树结构。我知道另一个选项(我认为是嵌套集?)但我现在要坚持这个。我现在正试图将数据从数据库中取出并放入 PHP 中的嵌套数组结构中。我有这样的功能:
class Data_Manager
{
public $connection = '';
public $collection = array();
function __construct() {
$this->connection = mysql_connect('localhost', 'root', 'root');
$thisTable = mysql_select_db('data');
// error handling truncated
}
function get_all() {
$arr = &$this->collection;
$this->recurseTree('', 0, $arr);
var_dump($arr);
}
function recurseTree($parent, $level, $arrayNode) {
$result = mysql_query('SELECT * FROM tasks WHERE parent="' . $parent . '";');
while ($row = mysql_fetch_array($result)) {
$row['children'] = array(); //where I'd like to put the kids
$arrayNode[$row['id']]= $row;
$this->recurseTree($row['id'], $level+1, $arrayNode[$row['id']]);
}
}
}
所以我想提出的是某种嵌套的关联数组树,但我不知道该怎么做。似乎什么都没有写入我传入的数组,而且我在递归中有点迷失自己。任何人都可以帮助我克服这最后一个问题,这将导致如下结果:
[
Parent1 => [
children => ['Child of 1', 'Sibling']
],
AnotherParent => [
children => ['First Child']
]
]
而且我不太关心输出的具体形式。它将被转换为 JSON,我还没有处理编写客户端处理程序,所以不用担心确切的结构。
谢谢!