2010-06-24 2 views
6

다음은 거래입니다. 나는 각 요소를 탐색하고 삭제하고자하는 "트리"또는 "서브 트리"를 가지고있다. 각 "노드"는 그 아래에있는 다른 노드에 대한 링크를 포함 할 수있다 (문제 없음). 또는 특정 "트리"/"하위 트리". 어떻게하면 특정 트리 내에서만 "삭제"하는 함수를 만들 수 있습니까?재귀 적 삭제 함수 만들기 (PHP에서)

+3

예제 구조와 원하는 출력을주고 싶을 수도 있습니다 – Gordon

+0

숙제 같은 냄새가납니다 ... –

+0

"트리"의 예와 삭제 작업 방법을 알려주십시오. – salathe

답변

0

당신은 realpath()를 사용할 필요가 필요

function DeleteTree($path) 
{ 
    if (is_dir($path) === true) 
    { 
     $path = realpath($path); 
     $files = array_diff(scandir($path), array('.', '..')); 

     foreach ($files as $file) 
     { 
      $file = realpath($path . '/' . $file); 

      // file is within tree 
      if (substr($file, 0, strlen($path)) == $path) 
      { 
       DeleteTree($file); 
      } 
     } 

     return rmdir($path); 
    } 

    else if (is_file($path) === true) 
    { 
     return unlink($path); 
    } 

    return false; 
} 

가 위의 당신이 찾고있는 무엇을해야한다.


오 ... 방금이 파일 시스템과 관련이 없을 수도 있음을 깨달았습니다 ... 오류는 모두 사용자의 것입니다! : P

1

이전에 사용한 것과 동일한 반복적 인 삭제입니다. 트리 내 링크 용 목록과 트리 외부 링크 용 목록 중 하나만 링크를 분리하여 보관하면됩니다. 또는 각 링크의 트리 내/트리 상태를 추적하는 플래그를 가질 수 있지만 링크를 만들 때 구별해야합니다.