我一直在使用二進制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