2014-11-05 135 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