这是交易。我有一个“树”或“子树”,我想导航并删除每个元素。每个“节点”可能包含指向其下方其他节点的链接(没问题)或者可能包含链接OUTSIDE特定的“树” / “子树”。如何构建仅删除指定树“内”的函数?
答案 0 :(得分:1)
这与您习惯的递归删除相同。您只需要将链接分开 - 一个用于树内链接的列表,一个用于树外链接的列表。或者,您可以使用一个标记来跟踪每个链接的树内/树外状态 - 但是您必须区分何时建立链接。
答案 1 :(得分:0)
答案 2 :(得分: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