PHP中遍歷目錄的兩種方法

 PHP中兩種遍歷某個目錄下的子目錄及文件的方法,遍歷時主要是採用遞歸的算法,讀某個目錄下面的內容時,如果是目錄,則遞歸遍歷此目錄,如果是文件,則將結果追加到數組中,同時數組用全局變量,定義在函數的外面,這樣便於數組一直將結果遞增起來

方法一

$dir = "e:/myphp/research/mailapi";
$dirs = array();

function scan_dir($dir) {
    global $dirs;
    if (!is_dir($dir)) return false;

    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            if ($file[0] == '.') continue;
            $fullpath = "$dir/$file";
            $dirs[] = $fullpath;
            if (is_dir($fullpath)) scan_dir($fullpath);           
        }
        closedir($dh);
    }

    return $dirs;
}
//scan_dir($dir);
//print_r($dirs);


方法二

function scan_dir2($dir) {
    global $dirs;
    if (!is_dir($dir)) return false;

    if ($dh = dir($dir)) {
        while (($file = $dh -> read()) !== false) {
            if ($file[0] == '.') continue;
            $fullpath = "$dir/$file";
            $dirs[] = $fullpath;
            if (is_dir($fullpath)) scan_dir2($fullpath);           
        }
        $dh->close();
    }

    return $dirs;
}
scan_dir2($dir);
print_r($dirs);


部分結果:
Array
(
    [0] => e:/myphp/research/mailapi/163
    [1] => e:/myphp/research/mailapi/163/163.php
    [2] => e:/myphp/research/mailapi/baseclass
    [3] => e:/myphp/research/mailapi/baseclass/baseclass.php
    [4] => e:/myphp/research/mailapi/gmail
    [5] => e:/myphp/research/mailapi/gmail/9063271b89460d5d4395cdfae8994089
    [6] => e:/myphp/research/mailapi/gmail/gmail-lite
    [7] => e:/myphp/research/mailapi/gmail/gmail-lite/chat.gif
    [8] => e:/myphp/research/mailapi/gmail/gmail-lite/clip.gif
    [9] => e:/myphp/research/mailapi/gmail/gmail-lite/compose.php
    [10] => e:/myphp/research/mailapi/gmail/gmail-lite/config.php
    [11] => e:/myphp/research/mailapi/gmail/gmail-lite/diagnose.php
    [12] => e:/myphp/research/mailapi/gmail/gmail-lite/dl.php
    [13] => e:/myphp/research/mailapi/gmail/gmail-lite/favicon.ico
    [14] => e:/myphp/research/mailapi/gmail/gmail-lite/glite.css
...
...
    [15] => e:/myphp/research/mailapi/gmail/gmail-lite/index.php

發佈了16 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章