淺談PHP封裝遍歷文件夾下所有文件函數

不管是在工作中還是在面試中,都會遇到遍歷一個文件的需求,這裏記錄一下,封裝遍歷文件夾中文件和文件夾的函數

<?php
function my_dir($dir) {
    $files = array();
    //注意這裏要加一個@,不然會有warning錯誤提示:)
    if(@$handle = opendir($dir)) { 
        while(($file = readdir($handle)) !== false) {
            if($file != ".." && $file != ".") { //排除根目錄;
                if(is_dir($dir."/".$file)) { 
                     //如果是子文件夾,就進行遞歸
                    $files[$file] = my_dir($dir."/".$file);
                } else { 
                    //不是就將文件的名字存入數組;
                    $files[] = $file;
                }
            }
        }
        closedir($handle);
        print_r($files);
        return $files;
    }
}

//輸出結果:
Array
(
    [0] => aaa.html
)
Array
(
    [0] => c.html
    [1] => b.html
    [abc] => 
)

或者下面的函數,根據需求可以靈活改動

<?php

function my_dir2($dir_path) {
     if(is_dir($dir_path)) {
         $dirs = opendir($dir_path);
         if($dirs) {
             while(($file = readdir($dirs)) !== false) {
                 if($file !== '.' && $file !== '..') {
                     if(is_dir($file)) {
                          echo $dir_path . '/' . $file; echo PHP_EOL;
                         my_dir2($dir_path . '/' . $file);
                    } else {
                         echo $dir_path . '/' . $file; echo PHP_EOL;
                     }
                }
             }
             closedir($dirs);
        }
     } else {
         echo '目錄不存在!';
     }
 }
 
 //輸出結果:
/home/www/aaa/bbb/c.html
/home/www/aaa/bbb/b.html
/home/www/aaa/bbb/abc
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章