【发布时间】:2019-10-25 07:12:12
【问题描述】:
我有一个最多 10 级的目录结构(可能会有所不同),给定目录名称,我想返回与给定目录名称匹配的第一个目录的完整路径。
public function LocalDirSearch($clouse) {
$path = $clouse[0];
$search = $clouse[1];
$result = $clouse[2];
$dirs = glob($path, GLOB_ONLYDIR);
foreach ($dirs as $dir) {
if(basename($dir)==$search){
return $dir;
break;
}
$this->LocalDirSearch([$dir,$search,$result]);
}
}
我制作了这个脚本,但它不能正常工作我不知道它到底缺少什么,它会无限期地运行......没有错误输出......
更新
这个目录结构:
+--pdf
+---+---i-pdf-0034
+---+---+---form
+---+---+---+---data
+---+---+---+---other
+---+---i-pdf-0045
+---+---+---form
+---+---+---+---data
+---+---+---+---other
+---+---i-pdf-0056
+---+---+---form
+---+---+---+---data
+---+---+---+---other
+--doc
+---+---i-doc-0034
+---+---+---form
+---+---+---+---data
+---+---+---+---other
+---+---i-doc-0045
+---+---+---form
+---+---+---+---data
+---+---+---+---other
+---+---i-doc-0056
+---+---+---form
+---+---+---+---data
+---+---+---+---other
函数调用:
$this->LocalDirSearch(['C:/xampp/htdocs/files','i-pdf-0045']);
搜索目录的脚本:
public function LocalDirSearch($clouse) {
$path = $clouse[0];
$search = $clouse[1];
$dirs = glob($path . '/*', GLOB_ONLYDIR);
foreach ($dirs as $dir) {
if (basename($dir) == $search) {
return $dir;
}else{
// return the result of the recursive call
return $this->LocalDirSearch([$dir, $search]);
}
}
}
目录中递归打印导航的输出:
'C:/xampp/htdocs/files/'
'C:/xampp/htdocs/files/pdf/'
'C:/xampp/htdocs/files/pdf/i-pdf-0034/'
'C:/xampp/htdocs/files/pdf/i-pdf-0034/form/'
'C:/xampp/htdocs/files/pdf/i-pdf-0034/form/data/' #out of search
返回:
'NULL'
【问题讨论】:
-
return = $dir中有一个错误(或拼写错误?),但似乎不是无限的。 -
是的,错了,我删除了'='
-
@Sammitch 我看到了这个,但是它可以返回文件名我没有找到任何像我一样的脚本,它适用于嵌套目录。