【发布时间】:2010-12-11 04:37:34
【问题描述】:
我一直在开发一个使用二进制传销系统的网站。
所以我在数据库中有两个表,用户和关系。用户中有 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 children_array($pid, $depth) 返回子元素 ... 对于 $depth = 1 它返回直接子元素(0 或 1 或 2),对于 $depth = 0 它返回所有子元素
谁能帮我实现这个功能?我认为该函数有效,但是 我不知道如何递归使用并添加到数组。
【问题讨论】:
标签: php arrays recursion tree binary-tree