本文實例講述了PHP讀取目錄樹的實現方法。分享給大家供大家參考,具體如下:
前一陣時間面試XX公司筆試題中竟然有這樣一道題:
使用PHP列出目錄樹!
當時一看就懵逼了!基本的思路還是有的,不過是使用遞歸算法,但對PHP操作目錄文件的方法卻不是很了解,所以今天好好補習一下!
解題思路:
1. 列出目錄中的文件。
2. 判斷是否是目錄,如果是目錄就繼續遞歸。
3. 將所有文件名,存入多維數組
<?phpfunction recurDir($pathName){ //將結果保存在result變量中 $result = array(); $temp = array(); //判斷傳入的變量是否是目錄 if(!is_dir($pathName) || !is_readable($pathName)) { return null; } //取出目錄中的文件和子目錄名,使用scandir函數 $allFiles = scandir($pathName); //遍歷他們 foreach($allFiles as $fileName) { //判斷是否是.和..因為這兩個東西神馬也不是。。。 if(in_array($fileName, array('.', '..'))) { continue; } //路徑加文件名 $fullName = $pathName.'/'.$fileName; //如果是目錄的話就繼續遍歷這個目錄 if(is_dir($fullName)) { //將這個目錄中的文件信息存入到數組中 $result[$fullName] = recurDir($fullName); }else { //如果是文件就先存入臨時變量 $temp[] = $fullName; } } //取出文件 if($temp) { foreach($temp as $f) { $result[] = $f; } } return $result;}//驗證一下這個函數是否好用!$tree = recurDir('cart_ajax');echo "<pre>";print_r($tree);echo "</pre>";?>
cart_ajax文件夾結構
js文件夾下的內容
顯示結果
大功告成了!目錄的級別確實是這樣的,不過看起來也太low了吧!稍微美化一下吧!
function beautifulTree($arr, $l = '-|'){ static $l = ''; static $str = ''; //遍歷剛才得到的目錄樹 foreach($arr as $key=>$val) { //如果是個數組,也就代表它是個目錄,那么就在它的子文件中加入-|來表示是下一級吧 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>";
顯示結果
希望本文所述對大家PHP程序設計有所幫助。
新聞熱點
疑難解答
圖片精選