PHP - 多维数组覆盖第一个值

时间:2013-12-18 09:04:26

标签: php arrays multidimensional-array

我正在创建一个多维数组以匹配公司的层次结构。我向数据库询问下线(保存在单独的表中)并开始循环。 目前我只是为最高级别和他下面的人做这个。我知道他下面有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;
                    }
                }
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

发现问题,即在循环中初始化$ complete ['children'],从而将数组重置为空。

解决方案:
重新执行代码,在循环外部初始化$ complete。

相关问题