2013-12-22 71 views
0

我有一个树阵像这样与父 - >子结构:递归在PHP中,在阵列层次结构,印刷树

Array 
(
    [0] => Array 
     (
      [id] => 12 
      [address] => root addr   
      [parent_id] => 0 
      [children] => Array 
       (
        [0] => Array 
         (
          [id] => 11 
          [address] => child addr     
          [parent_id] => 12 
          [children] => Array 
           (
            [0] => Array 
             (
              [id] => 16 
              [address] => child addr 2 
              [parent_id] => 11 
              [children] => Array 
               (
                [0] => Array 
                 (
                  [id] => 19 
                  [address] => child addr 3 
                  [parent_id] => 16 
                 ) 

               ) 

             ) 

            [1] => Array 
             (
              [id] => 18 
              [address] => child addr 4 
              [parent_id] => 11 
             ) 

            [2] => Array 
             (
              [id] => 20 
              [address] => child addr 5 
              [parent_id] => 11 
             ) 

           ) 

         ) 

       ) 

     ) 

    [1] => Array 
     (
      [id] => 17 
      [address] => root addr 2   
      [parent_id] => 0 
     ) 

) 

我有一个生成树功能,打印我的树结构:

function printTree($data, $level = 0, $p_counter = 1) {  

      foreach ($data as $item) { 

       if ($item['parent_id'] == 0) { 
        $addr = $p_counter . '. ' . $item['address']; 
        $p_counter++; 
       } 

       else if ($item['parent_id'] != 0) { 

        $addr = str_repeat(' - ', $level) . $item['address']; 


       } else { 
        $addr = $item['address'];    
       } 

       global $result; 

       $result['aaData'][] = Array(
       $addr, 

      ); 

       if (isset($item['children'])) {      
        printTree($item['children'], $level + 1, $p_counter + 1); 
       } 


      } 

      return $result;   
     } 

现在我的输出是这样与孩子的水平

1. root addr 
- child addr   
- - child arr 2 
- - - child arr 3   
- - child addr 4  
- - child addr 5  
2. root addr 2 

我的目标是打印阵列像这样,正帮助!

1. root addr 
1-1. child addr   
1-1-1. child arr 2 
1-1-1-1. child arr 3   
1-1-2. child addr 4  
1-1-3. child addr 5  
2. root addr 2 

回答

0

如果使用

foreach ($data as $key => $item) { 

} 

你可以使用$键获得的0,1和2在您的字符串。