我一直在使用二进制mlm系统的网站上工作。递归排列数组到水平
所以我必须在数据库中的两个表,用户ANAD关系。用户中有ID和个人数据列。关系有4列:ID,parentID,childID,pos。哪里pos是左或右。
我已经成功地编写了递归列出给定pid(parentID)的所有子项的函数。不过,我需要对它进行分级(用于显示和计算)。
我有用户ID的孩子组成的数组= 1:
Array
(
[0] => Array
(
[id] => 2
[parentID] => 1
[pos] => l
)
[1] => Array
(
[id] => 4
[parentID] => 2
[pos] => l
)
[2] => Array
(
[id] => 8
[parentID] => 4
[pos] => l
)
[3] => Array
(
[id] => 5
[parentID] => 2
[pos] => p
)
[4] => Array
(
[id] => 3
[parentID] => 1
[pos] => p
)
[5] => Array
(
[id] => 6
[parentID] => 3
[pos] => l
)
[6] => Array
(
[id] => 7
[parentID] => 3
[pos] => p
)
)
现在我有函数命名get_levels返回一个多维数组应该是这样的:
Array
(
[0] => Array
(
[0] => Array
(
[id] => 2
[parentID] => 1
[pos] => l
)
[1] => Array
(
[id] => 3
[parentID] => 1
[pos] => p
)
)
[1] => Array
(
[0] => Array
(
[id] => 4
[parentID] => 2
[pos] => l
)
[1] => Array
(
[id] => 5
[parentID] => 2
[pos] => p
)
[2] => Array
(
[id] => 6
[parentID] => 3
[pos] => l
)
[3] => Array
(
[id] => 7
[parentID] => 3
[pos] => p
)
)
ETC.
)
这里的功能:
function get_levels($pid,$level, $level_id){
$children = children_array($pid,1);
if (sizeof($children) > 0):
foreach ($children as $child):
if ($child["parentID"] == $pid):
get_levels($child["id"], $level, $level_id+1);
$level[$level_id][] = $child;
endif;
endforeach;
endif;
return $level;
}
function chi ldren_array($ pid,$ depth)返回子...对于$ depth = 1,它返回直接子元素(0或1或2),对于$ depth = 0它返回所有子元素
任何人都可以帮助我功能?我认为该功能的作品,但我不知道如何递归使用和添加到数组。
我发现这个二叉树类:http://www.phpclasses.org/browse/file/11713.html 什么应该是在数据库中存储数据的最佳方式? ID | parentID | leftChildID | rightChildID? – Smaug 2009-10-29 16:51:43
对于数据,我只会提及父母,如果没有其他方法可以找出它的位置可能会出现。没有父节点的节点是根节点。 – 2009-10-29 22:10:04