아래 배열의 형태라면 트리형태로 출력하고자 할 때 유용합니다.
특히 답글 형태 게시판에서 사용할 수 있습니다.


 $list = array(

  array('idx' => 1,  'parent_id' => 0),

  array('idx' => 2,  'parent_id' => 0),

  array('idx' => 3,  'parent_id' => 0),

  array('idx' => 4,  'parent_id' => 0),

  array('idx' => 5,  'parent_id' => 0),

  array('idx' => 6,  'parent_id' => 2),

  array('idx' => 7,  'parent_id' => 2),

  array('idx' => 8,  'parent_id' => 3),

  array('idx' => 9,  'parent_id' => 4),

  array('idx' => 10, 'parent_id' => 9)

 );

 $atr = Categories($list, 'idx');

 print_r($atr);


ex.1)

function Categories(
$atr, $id = 'id', 
$parent_id = 'parent_id', 
$children = 'children')
{
  $nlist = array(
    array( $children => array() )
  );
  $raw = array(&$nlist[0]);

  if(isset($atr))
  {
    foreach($atr as $q => $w)
    {
      $raw[$w[$parent_id]][$children][$w[$id]] = $w;
      $raw[$w[$id]] = 
          &$raw[$w[$parent_id]][$children][$w[$id]];
    }
  }

  if(is_array($raw[$atr[0][$parent_id]][$children]))
  {
    return ($raw[$atr[0][$parent_id]][$children]
           + $nlist[0][$children]);
  }

return $nlist[0][$children];
}

/* 
Categories( atr, id, parent_id);
  atr 인수: 정렬할 배열
  id 인수: 선택. 기본 값 : id
  parent_id 인수: 선택. 기본 값 : parent_id
  children 인수: 선택. 기본 값 : children
  반환 값: TREE 로 정렬한 배열
*/