나는 당신의 코멘트 테이블 ID, PARENT_ID, 주석, ...을 가지고 있으며, 내 제안은 다음과 같이 간다 asssume;
당신의 코멘트를 선택하십시오;
$sql = "SELECT *FROM comments ORDER BY id DESC";
$rows = mysql_query($sql);
그리고 다음 단계
는 operations.You 아래에 다음 코드를보고 데모
here 작업 시도 할 수 있습니다 배열입니다; 데모
$rows = your_select_result;//I assumed that you have done these stuffs
$comments = $row;
/**
This is test data, please remove this array while you are
running own application.Since you will use the data one you get your db
**/
$comments = array(
1 => array('id' => 1, 'parent_id' => 0, 'childs' => array()),
2 => array('id' => 2, 'parent_id' => 0, 'childs' => array()),
3 => array('id' => 3, 'parent_id' => 0, 'childs' => array()),
5 => array('id' => 5, 'parent_id' => 0, 'childs' => array()),
11 => array('id' => 11, 'parent_id' => 0, 'childs' => array()),
17 => array('id' => 17, 'parent_id' => 0, 'childs' => array()),
23 => array('id' => 23, 'parent_id' => 0, 'childs' => array()),
28 => array('id' => 28, 'parent_id' => 0, 'childs' => array()),
4 => array('id' => 4, 'parent_id' => 1, 'childs' => array()),
6 => array('id' => 6, 'parent_id' => 1, 'childs' => array()),
8 => array('id' => 8, 'parent_id' => 2, 'childs' => array()),
9 => array('id' => 9, 'parent_id' => 2, 'childs' => array()),
7 => array('id' => 7, 'parent_id' => 3, 'childs' => array()),
12 => array('id' =>12, 'parent_id' => 7, 'childs' => array()),
13 => array('id' => 13, 'parent_id' => 12, 'childs' => array()),
);
/** Comment prepare start */
foreach ($comments as $k => &$v) {
if ($v['parent_id'] != 0) {
$comments[$v['parent_id']]['childs'][] =& $v;
}
}
unset($v);
foreach ($comments as $k => $v) {
if ($v['parent_id'] != 0) {
unset($comments[$k]);
}
}
/** Comment prepare end */
//Your indent pattern
function indent($size) {
$string = "";
for ($i = 0; $i < $size; $i++) {
$string .= "#";
}
echo $string;
}
function printComments($comments, $indent = 0) {
foreach ($comments as $comment) {
echo indent($indent + 1).' I am comment '.$comment['id']."\n";
if (!empty($comment['childs'])) {
printComments($comment['childs'], $indent + 1);
}
}
}
printComments($comments);
이 구체화 된 경로 기술을 사용하는 경우, BTW here
예, 완벽하게 가능합니다. * 트리를 만드는 * 재귀 * 함수를 만들어야합니다. (Google, 그걸 찾아서 ...) – deceze
또한이 트리 구조를 일반 목록으로 펼친 다음 간단한 foreach를 사용하여 출력 할 수도 있습니다 –
[부모 - 자식 관계의 연속을 계층 적 트리?] (http://stackoverflow.com/questions/2915748/how-can-i-convert-a-series-of-parent-child-relationships-into-a-hierarchical-tre) -이 질문을 받았다. 전에 [그리고 대답] (http://stackoverflow.com/a/8285070/367456). 배열 구조를 중첩 된 세트와 같은 다른 구조로 변환하는 것도 유용합니다. – hakre