首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP SPL DirectoryIterator 遍歷目錄高效實現:屬性獲取與遞歸遍歷對比

     編輯:PHP 相關知識

DirectoryIterator 基本用法

<?php
function listDir($dir) {
    if (!file_exists($dir) || !is_dir($dir)) return '';
    $it = new DirectoryIterator($dir);
    $list = ['dirNum'=>0, 'fileNum'=>0, 'lists'=>[]];
    while ($it->valid()) {
        if (!$it->isDot()) {
            $list['lists'][$it->key()]['name'] = $it->getFilename();
            if ($it->isDir()) {
                $list['dirNum']++;
                $list['lists'][$it->key()]['isDir'] = 1;
            } else {
                $list['fileNum']++;
                $list['lists'][$it->key()]['isDir'] = '';
            }
        }
        $it->next();
    }
    return $list;
}
?>

常用方法速查

方法說明
__construct($path)構建目錄迭代器
current()返回當前 SplFileInfo 對象
getFilename()返回文件名
getPathname()返回完整路徑
isDir() / isFile() / isLink()判斷類型
isDot()是否為 . 或 ..
getSize() / getMTime() / getATime() / getCTime()大小、修改/訪問/變更時間
getPerms() / getOwner() / getGroup() / getInode()權限、擁有者、組、inode
key() / next() / rewind() / valid()迭代器標準接口

RecursiveDirectoryIterator 遞歸遍歷子目錄

繼承 DirectoryIterator,新增 hasChildren()、getChildren()。配合 RecursiveIteratorIterator 可平鋪輸出所有層級文件。

RecursiveIteratorIterator 常用方法

方法說明
getDepth()當前遞歸深度
getSubIterator()當前活動子迭代器
current() / key() / next() / rewind() / valid()遍歷控制

SPL 提供了強大、標準化的目錄操作接口,推薦替代傳統 opendir/readdir。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved