2013-12-18 35 views
0

我正在创建一个多维数组以匹配公司的层次结构。我问数据库的下线(保存在一个单独的表),并开始循环它。 目前我只为最高等级和他下面的人做这个。我知道他下面有6个人,因此最终结果只显示一个。当我在循环中每次完成var_dump $时,我都会在children-array中看到不同的值。 (他改写而不是加起来)。PHP - 多维数组覆盖第一个值

我都试过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

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

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