2014-11-05 139 views
0

我有一个树状结构这样使用PHP从JSON获取父级和子级深度级别?

Tree Structure

,并得到这样

[{"id":1,"children":[{"id":3,"children":[{"id":9,"children":[{"id":8}]}]}]},{"id":10,"children":[{"id":11,"children":[{"id":13}]},{"id":12}]}] 

我需要找到使用PHP这个JSON是孩子的孩子深度级别和父ID JSON值。

所以我想输出会是这样

id=>1, parent_id=>0, level=>0 
id=>3, parent_id=>1, level=>1 
id=>9, parent_id=>3, level=>2 
id=>8, parent_id=>9, level=>3 
id=>10, parent_id=>0, level=>0 
id=>11, parent_id=>10, level=>1 
id=>13, parent_id=>11, level=>2 
id=>12, parent_id=>10, level=>1 

感谢

回答

1

尝试是这样的:

$jsonString = '[{"id":1,"children":[{"id":3,"children":[{"id":9,"children":[{"id":8}]}]}]},{"id":10,"children":[{"id":11,"children":[{"id":13}]},{"id":12}]}]'; 
$jsonArray = json_decode($jsonString); 

function read_tree_recursively($items, $parent_id = 0, $result = array(), $level = 0) { 
    foreach($items as $child) { 
     $result[$child->id] = array(
      'id' => $child->id, 
      'parent_id' => $parent_id, 
      'level' => $level 
     ); 

     if (!empty($child->children)) { 
      $result = read_tree_recursively($child->children, $child->id, $result, $level+1); 
     } 
    } 
    return $result; 
} 

// usage 
read_tree_recursively($jsonArray); 
+0

太谢谢你了。它的工作...... !!!!!!! – RaGu 2014-11-05 09:54:20