У меня есть структура каталогов до 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
Return:
'NULL'