好吧,基本上,我已经形成了一个mySQL查询,它返回一个完全按我的数据结构排序的数据集.如果我要声明它,它看起来像这样:
$arr = array(
array( 'name' => 'Root', 'depth' => 0 ),
array( 'name' => 'Food', 'depth' => 0 ),
array( 'name' => 'Fruit', 'depth' => 1 ),
array( 'name' => 'Bannnanna', 'depth' => 2 ),
array( 'name' => 'Apple', 'depth' => 2 ),
array( 'name' => 'Bannnanna', 'depth' => 2 ),
array( 'name' => 'Meat', 'depth' => 1 ),
array( 'name' => 'Furniture', 'depth' => 0 )
);
Run Code Online (Sandbox Code Playgroud)
我想要的是将这个$ arr提供给一个方法,这样我就可以得到一个多维数组.
例如,Fruit将是Food的孩子.而Bananana将是Fruit的孩子.我需要每个'孩子'的钥匙是'页面'.
我上面显示的数组也可以返回其他信息,如'lft'和'rgt'.我没有'parentId'设置,但如果需要我可以更改我的模型,但我更喜欢坚持使用嵌套集模型.
也许这样的事情
$arr = array(
array( 'name' => 'Root', 'depth' => 0 ),
array( 'name' => 'Food', 'depth' => 0 ),
array( 'name' => 'Fruit', 'depth' => 1 ),
array( 'name' => 'Bannnanna', 'depth' => 2 ),
array( 'name' => 'Apple', 'depth' => 2 ),
array( 'name' => 'Bannnanna', 'depth' => 2 ),
array( 'name' => 'Meat', 'depth' => 1 ),
array( 'name' => 'Furniture', 'depth' => 0 )
);
$p = array(array());
foreach($arr as $n => $a) {
$d = $a['depth'] + 1;
$p[$d - 1]['children'][] = &$arr[$n];
$p[$d] = &$arr[$n];
}
print_r($p[0]);
Run Code Online (Sandbox Code Playgroud)