我們要使用的函數(shù)有 Scandir,,它的作用是列出指定路徑中的文件和目錄,就像 Dir 一樣,。 > 與更強(qiáng)力的 Glob() 函數(shù),,作用是以數(shù)組的形式返回與指定模式相匹配的文件名或目錄,。 一. 遍歷單層文件夾: > 在掃描單層文件夾的問(wèn)題是,兩個(gè)函數(shù)的結(jié)果雖有不同,,不過(guò)表現(xiàn)是相差不大的,。 > Scandir 函數(shù)會(huì)提供額外兩行,分別是 “.” 和 “..” ,,而 Glob 則是沒(méi)有的,。 function get_dir_scandir(){ $tree = array(); foreach(scandir('./') as $single){ echo $single."<br/>\r\n"; } } get_dir_scandir(); function get_dir_glob(){ $tree = array(); foreach(glob('./*') as $single){ echo $single."<br/>\r\n"; } www.jbxue.com } get_dir_glob(); 二. 遞歸遍歷文件樹(shù): > 在遞歸掃描文件夾樹(shù)的問(wèn)題上,還是 Glob 函數(shù)的表現(xiàn)好一點(diǎn),,很準(zhǔn)確的說(shuō),。 > Scandir 函數(shù)會(huì)莫名其妙掃描兩次 ../ 處的文件,也就是說(shuō)如果小邪有倆文件,。 > ../b.php 和 ../a.php,,結(jié)果就會(huì)在掃描報(bào)告上面出現(xiàn)兩次,很是奇怪,。 //Update at 2010.07.25 - 以下代碼作廢 $path = '..'; function get_filetree_scandir($path){ $tree = array(); foreach(scandir($path) as $single){ if(is_dir('../'.$single)){ $tree = array_merge($tree,get_filetree($single)); } else{ $tree[] = '../'.$single; } } return $tree; } print_r(get_filetree_scandir($path)); //Update at 2010.07.25 - 以下為新代碼 $path = './'; function get_filetree_scandir($path){ $result = array(); $temp = array(); if (!is_dir($path)||!is_readable($path)) return null; //檢測(cè)目錄有效性 $allfiles = scandir($path); //獲取目錄下所有文件與文件夾 foreach ($allfiles as $filename) { //遍歷一遍目錄下的文件與文件夾 if (in_array($filename,array('.','..'))) continue; //無(wú)視 . 與 .. $fullname = $path.'/'.$filename; //得到完整文件路徑 if (is_dir($fullname)) { //是目錄的話繼續(xù)遞歸 $result[$filename] = get_filetree_scandir($fullname); //遞歸開(kāi)始 } www.jbxue.com else { $temp[] = $filename; //如果是文件,,就存入數(shù)組 } } foreach ($temp as $tmp) { //把臨時(shí)數(shù)組的內(nèi)容存入保存結(jié)果的數(shù)組 $result[] = $tmp; //這樣可以讓文件夾排前面,文件在后面 } return $result; } print_r(get_filetree_scandir($path)); > Glob 函數(shù)掃描灰常準(zhǔn)確,,并且會(huì)自動(dòng)按照字母排好順序,,貌似是最佳方案。 $path = '..'; function get_filetree($path){ $tree = array(); foreach(glob($path.'/*') as $single){ if(is_dir($single)){ $tree = array_merge($tree,get_filetree($single)); } www.jbxue.com else{ $tree[] = $single; } } return $tree; } print_r(get_filetree($path));
|
|
來(lái)自: xf_baby > 《PHP基礎(chǔ)教程》