下面的函數將返回來自給定目錄(包括所有子目錄)的XML文件數組。如何通過傳遞第二個可選參數來排除目錄來修改此函數。讀取目錄中除
E.g:
getDirXmlFiles($config_dir, "example2");
Directory/Files
/file1.xml
/file2.xml
/examples/file3.xml
/examples/file4.xml
/example2/file5.xml
/example2/file5.xml
在上述情況下,該函數將返回除example2目錄中的文件之外的所有文件。
function getDirXmlFiles($base) {
$files = array();
if(!is_dir($base)) return $files;
if ($handle = opendir($base)) {
while (false !== ($file = readdir($handle))) {
if ($file == "." || $file == "..") continue;
if(is_dir("$base/$file")) {
$subfiles = $this->getDirXmlFiles("$base/$file");
$files = array_merge($files, $subfiles);
} else {
if(Cms_File::type($file,false) == "xml")
$files[] = "$base/$file";
}
}
closedir($handle);
}
return $files;
}
如果您只能測試「正在移動」的部分「$ file!= $ excludeDir',則首先創建2個用於測試的新字符串,第二種解決方案將僅排除第一級目錄上的文件,而不排除在較低的子目錄'$ this-> getDirXmlFiles(「$ base/$ file」,$ excludeDir);',第三,你應該說服新手將字符串串聯起來用'.'運算符)來獲得最佳實踐,第四你應該說服新手連接字符串只有一次不是每次需要時 –