Fix for Turn a flat taxonomy-tree into a real tree

  1.  $terms = taxonomy_get_tree(9);
  2.  
  3.   // build a map tid->term
  4.   $tree = array();
  5.   foreach ($terms as &$term) {
  6.     $tree[$term->tid] = &$term;
  7.   }
  8.  
  9.   // add child links to every node
  10.   foreach ($terms as &$term) {
  11.     foreach ($term->parents as $parent) {
  12.       if ($parent != 0) {
  13.         $tree[$parent]->children[] = &$term;
  14.       }
  15.     }
  16.   }
  17.  
  18.   // remove non-root terms
  19.   $final_tree = array();
  20.   foreach ($tree as $tid => &$term) {
  21.     if ($term->parents[0] == 0) {
  22.       $final_tree[$tid] = $term;
  23.     }
  24.   }
  25.  
  26.   echo '<pre>'; print_r($final_tree); echo '</pre>';