PHP, tp5, 使用遞歸遍歷獲取文件夾下面所有文件

文件保存在數據庫中長這樣:  

 

輸入是一個元素爲目錄名的數組

 

具體代碼如下: 

<?php

// 遞歸獲取文件夾下面所有的文件, 不包括文件夾, 存入 objects 列表中
protected function traversal_folder($dirs, $objects=[])
{
    $userId = $this->getUserId();
    foreach ($dirs as $key => $value) {
        $suffix = pathinfo($value, PATHINFO_EXTENSION);
        // 根據是否有後綴判斷是文件還是文件夾
        if ($suffix == '') {
            // 如果是文件夾則獲取該文件夾下所有文件, 包括文件夾
            $result = Db::name('asset')
                ->where('user_id', $userId)
                ->where('file_path', $value) 
                ->select();

            // 將獲取到的文件列表重新拼接成帶路徑的文件名並存入文件數組中
            $files = [];
            foreach ($result as $k => $file) {
                $files[] = $file['file_path'] . '/' . $file['filename'];
            }
            
            // 文件夾傳入遞歸函數繼續獲取文件
            $objects = $this->traversal_folder($files);
        } else {
            // 將文件名添加到oss待刪除列表中
            $objects[] = $value;
        }
    }
    return $objects;
}

 

 看到這裏, 有疑問請指出!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章