在PHP中,基于随机关系数据的分层结构数组?
我的问题非常类似于下面的问题,但我有几个不同之处,包括用PHP编写 我在CSV中有以下数据:在PHP中,基于随机关系数据的分层结构数组?,php,python,csv,hierarchy,hierarchical-data,Php,Python,Csv,Hierarchy,Hierarchical Data,我的问题非常类似于下面的问题,但我有几个不同之处,包括用PHP编写 我在CSV中有以下数据: firstname,surname,position,manager John,D,Clerk,Jane D Bob,B,Clerk,Jane D Harry,S,Supervisor,Jack W Jack,W,CEO, David,B,Cook,Jack W Jane,D,CTO, Amy,L,CBO, Mike,M,Singer,John D 使用PHP,我需要在一个Hierarchical结
firstname,surname,position,manager
John,D,Clerk,Jane D
Bob,B,Clerk,Jane D
Harry,S,Supervisor,Jack W
Jack,W,CEO,
David,B,Cook,Jack W
Jane,D,CTO,
Amy,L,CBO,
Mike,M,Singer,John D
使用PHP,我需要在一个Hierarchical结构中创建一个数据数组,其中记录位于正确的管理器记录下。顶层记录由空白的“管理者”字段表示。请注意如何可以有多个顶级记录。此外,请注意数据是如何完全随机的
我试图在PHP中转换上面的buildtree()函数,但它似乎不正确。这是我的尝试,有人能解释一下我可能出了什么问题吗?我似乎遇到的问题是,当我将数组传递给buildtree()时,它的结尾是因为它以“blank”键开始,因此它不会继续递归:
function buildtree($parents,$tree = array(),$parent_id = ''){
$parent = $parents[$parent_id];
if($parent == ''){
return $tree;
}
foreach($parent as $child){
$report = array($child[0].' '.$child[1]);
if(empty($tree)){
$tree = $report;
}
else{
$reports = $tree['reports'];
$reports = array_merge($reports,$report);
}
buildtree($parents,$report,$child[0].' '.$child[1]);
}
return $tree;
}
# something not right about this.
# first, build an array of managers
foreach($_SESSION['csv_data'] as $k=>$val){
if($k > 0){
$manager = $val[3];
$heir[$manager]['reports'][$val[0].' '.$val[1]] = '';
}
}
$final = buildtree($heir);
echo '<pre>';
print_r($final);
echo '</pre>';
def buildtree(t=None, parent_eid=''):
"""
Given a parents lookup structure, construct
a data hierarchy.
"""
parent = parents.get(parent_eid, None)
if parent is None:
return t
for eid, name, mid in parent:
report = { 'name': name }
if t is None:
t = report
else:
reports = t.setdefault('reports', [])
reports.append(report)
buildtree(report, eid)
return t
data = buildtree()