我查看了引用的代码,并对其进行了修改以满足您的需求。仅用此替换createTree函数并尝试
function createTree($directory,$parent = '')
{
$html = "<ul>";
foreach($directory as $keyDirectory => $eachDirectory)
{
if(is_array($eachDirectory))
{
$html .= "<li class='closed'><span class='folder'>" . $keyDirectory . "</span>";
$html .= createTree($eachDirectory,$keyDirectory);
$html .= "</li>";
}
else
{
$origin = 'imgs';
if(trim($parent) !== ''){
$path = $origin . '/' . $parent . "/" .$eachDirectory;
}else{
$path = $origin . '/' . $eachDirectory;
}
$html .= "<li><span class='file'><a href='" . $path . "' target='_blank'>". $eachDirectory ."</a></span></li>";
}
}
$html .= "</ul>";
return $html;
}
您会注意到我在该函数的参数列表中添加了一个新的参数项,称为$parent。这用于携带将被链接的项目的父文件夹的文件夹名称。然后将文件夹名称附加到$origin变量(这是您使用getFolderTree函数遍历的文件夹的名称,在我的例子中是“imgs”。
有一个 if-else 语句检查 $parent 是否为空,从那里可以很好地自我解释。如果您想澄清,请询问。
注意 1:您需要将 $origin 值替换为根文件夹的名称以获得完整路径
注意 2:您需要将正斜杠 (/) 替换为系统的正斜杠,例如对于 *NIX,它是一个反斜杠,因此对于 PHP,您在字符串内部工作时需要使用双反斜杠,但如果您在 Windows 上,我的编辑将工作正常