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

<?php
 $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);
 ?>

<?php
 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 로 정렬한 배열
 */
 ?>

0 댓글