我需要創建一個函式來搜索所有目錄和子目錄中的特定檔案,myFile 可以在任何地方,這是我的代碼:
$rootDir = realpath($_SERVER["DOCUMENT_ROOT"]) . '/file';
$filename = 'myFile';
public function searchFile($rootDir, $filename)
{
$dir = opendir($rootDir);
while ($entry = readdir($dir)) {
if (is_file("$rootDir/$entry") && $entry == $filename) {
return "$rootDir/$entry/$filename";
}
if (is_dir("$rootDir/$entry")) {
return $this->searchFile("$rootDir/$entry", $filename);
}
}
}
我的問題是我的子目錄中可能有除 'myFile' 之外的其他檔案,并且我的遞回函式會拋出一個錯誤,因為 '$entry' 正在成為一個檔案。
這是我的目錄的示例:
-directory_1
-directory11
-randomFile.pdf
-directory_2
-myfile
-directory_3
-directory_33
-etc...
uj5u.com熱心網友回復:
嘿,您可以使用 PHP 類進行此操作
遞回目錄迭代器
遞回迭代器迭代器
您可以輕松找到您想要的檔案。注意:我的基本目錄有“a”子檔案夾有“b”子檔案夾有“c”,這有 test.txt 檔案。–
<?php
$directory = new \RecursiveDirectoryIterator('a');
$iterator = new \RecursiveIteratorIterator($directory);
$filename = 'test.txt';
foreach ($iterator as $info) {
if ($info->getFilename() == $filename) {
echo $info->getFileInfo() . "\r\n";
}
}
// Result
// a/b/c/test.txt
?>
uj5u.com熱心網友回復:
首先通過使用獲取目錄串列
<?php
$dirs = array_filter(glob('*'), 'is_dir');
//print_r($dirs);
?>
并在每個檔案夾中使用 for 回圈檢查檔案名
<?php foreach($dirs as $key) { ?>
\\your code as you required.
<? } ?>
要檢查目錄中的檔案串列,請參閱此 php 函式單擊
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/498320.html
