아래 배열의 형태라면 트리형태로 출력하고자 할 때 유용합니다. 특히 답글 형태 게시판에서 사용할 수 있습니다.
<?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];
}
?>