本文實例講述了PHP讀取目錄樹的實現(xiàn)方法。分享給大家供大家參考,具體如下:
前一陣時間面試XX公司筆試題中竟然有這樣一道題:
使用PHP列出目錄樹!
當(dāng)時一看就懵逼了!基本的思路還是有的,不過是使用遞歸算法,但對PHP操作目錄文件的方法卻不是很了解,所以今天好好補習(xí)一下!
解題思路:
1. 列出目錄中的文件。
2. 判斷是否是目錄,如果是目錄就繼續(xù)遞歸。
3. 將所有文件名,存入多維數(shù)組
?php function recurDir($pathName) { //將結(jié)果保存在result變量中 $result = array(); $temp = array(); //判斷傳入的變量是否是目錄 if(!is_dir($pathName) || !is_readable($pathName)) { return null; } //取出目錄中的文件和子目錄名,使用scandir函數(shù) $allFiles = scandir($pathName); //遍歷他們 foreach($allFiles as $fileName) { //判斷是否是.和..因為這兩個東西神馬也不是。。。 if(in_array($fileName, array('.', '..'))) { continue; } //路徑加文件名 $fullName = $pathName.'/'.$fileName; //如果是目錄的話就繼續(xù)遍歷這個目錄 if(is_dir($fullName)) { //將這個目錄中的文件信息存入到數(shù)組中 $result[$fullName] = recurDir($fullName); }else { //如果是文件就先存入臨時變量 $temp[] = $fullName; } } //取出文件 if($temp) { foreach($temp as $f) { $result[] = $f; } } return $result; } //驗證一下這個函數(shù)是否好用! $tree = recurDir('cart_ajax'); echo "pre>"; print_r($tree); echo "/pre>"; ?>
cart_ajax文件夾結(jié)構(gòu)
js文件夾下的內(nèi)容
顯示結(jié)果
大功告成了!目錄的級別確實是這樣的,不過看起來也太low了吧!稍微美化一下吧!
function beautifulTree($arr, $l = '-|') { static $l = ''; static $str = ''; //遍歷剛才得到的目錄樹 foreach($arr as $key=>$val) { //如果是個數(shù)組,也就代表它是個目錄,那么就在它的子文件中加入-|來表示是下一級吧 if(is_array($arr[$key])) { $str.=$l.$key."br/>"; $l.='-|'; beautifulTree($arr[$key], $l); }else { $str.=$l.$val."br/>"; } } $l = ''; return $str; } $beautifulTree = beautifulTree($tree); echo "pre>"; print_r($beautiful); echo "/pre>";
顯示結(jié)果
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP目錄操作技巧匯總》、《php文件操作總結(jié)》、《PHP常用遍歷算法與技巧總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計算法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計有所幫助。
標(biāo)簽:武威 常州 吐魯番 遵義 寧夏 徐州 荊門 遂寧
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP讀取目錄樹的實現(xiàn)方法分析》,本文關(guān)鍵詞 PHP,讀取,目錄樹,的,實現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。