要查詢指定目錄下的指定文件,包括多層子目錄,可以使用遞歸函數來實現。下面是一個使用PHP遞歸查詢指定目錄下文件的示例代碼:
function searchFiles($dir, $filename) {
// 遍歷目錄
$files = scandir($dir);
foreach ($files as $file) {
if ($file === '.' || $file === '..') {
continue;
}
$path = $dir . '/' . $file;
if (is_dir($path)) {
// 如果是目錄,則遞歸調用searchFiles函數
searchFiles($path, $filename);
} else {
// 如果是文件,則判斷是否與指定文件名匹配
if ($file === $filename) {
echo $path . "\n";
}
}
}
}
// 調用searchFiles函數進行查詢
$searchDir = '/path/to/directory'; // 替換爲你要查詢的目錄路徑
$searchFile = 'example.txt'; // 替換爲你要查詢的文件名
searchFiles($searchDir, $searchFile);將/path/to/directory替換爲你要查詢的目錄路徑,將example.txt替換爲你要查詢的文件名。這個函數會遍歷指定目錄及其子目錄中的所有文件,並打印出與指定文件名匹配的文件路徑。
請注意,以上代碼僅提供了基本的查詢功能,如果你需要更復雜的查詢條件或者對查詢結果進行處理,可以根據實際需求進行修改。
新版本:
function searchFiles($dir, $filename) {
// 遍歷目錄
$files = scandir($dir);
foreach ($files as $file) {
if ($file === '.' || $file === '..') {
continue;
}
$path = $dir . '/' . $file;
if (is_dir($path)) {
// 如果是目錄,則遞歸調用searchFiles函數
$result = searchFiles($path, $filename);
if ($result !== false) {
return $result; // 如果找到匹配的文件,則直接返回路徑
}
} else {
// 如果是文件,則判斷是否與指定文件名匹配
if ($file === $filename) {
return $path; // 找到匹配的文件,返回路徑
}
}
}
return false; // 循環結束時仍未找到匹配的文件,返回false
}