我正在创建一个多维数组以匹配公司的层次结构。我向数据库询问下线(保存在单独的表中)并开始循环。 目前我只是为最高级别和他下面的人做这个。我知道他下面有6个人,因此最终结果只显示一个。当我在循环中每次var_dump $完成时,我在children-array中看到不同的值。 (AKA他覆盖而不是加起来)。
我已经尝试了array_push和这个方法,我希望我已经足够清楚,因为我可能不会(抱歉。)
代码:
foreach ($downpositions as $downposition) {
// start position
if ($downposition['PositionsDownposition']['positionsdownpositions_rel_position'] == 1) {
// check downline only on first level
if ($downposition['PositionsDownposition']['positionsdownpositions_level'] == 1) {
foreach ($downpositions as $mother) {
if ($mother['PositionsDownposition']['positionsdownpositions_rel_downposition'] == 1) {
// format it
$node = array(
'id' => $downposition['PositionsDownposition']['positionsdownpositions_id'],
'name' => $downposition['PositionsDownposition']['positionsdownpositions_rel_position'],
'children' => array()
);
$complete = array(
'id' => $mother['PositionsDownposition']['positionsdownpositions_id'],
'name' => $mother['PositionsDownposition']['positionsdownpositions_rel_position'],
'children' => array()
);
// add up to array
$complete['children'][] = $node;
}
}
}
}
}
答案 0 :(得分:1)
发现问题,即在循环中初始化$ complete ['children'],从而将数组重置为空。
解决方案:
重新执行代码,在循环外部初始化$ complete。