思路:首先獲取一個目錄下所有文件名可以使用 scandir() 函數。scandir() 函數返回指定目錄中的文件和目錄的數組。因為這個返回的數據不包含子目錄下文件,所以可以使用遞歸來處理。
/** * @param $dir 要查找的文件路徑 * @param $dir_array 存儲文件名的數組 */ function find_files($dir, &$dir_array) { // 讀取當前目錄下的所有文件和目錄(不包含子目錄下文件) $files = scandir($dir); if (is_array($files)) { foreach ($files as $val) { // 跳過. 和 .. if ($val == '.' || $val == '..') continue; // 判斷是否是目錄 if (is_dir($dir . '/' . $val)) { // 將當前目錄添加進數組 $dir_array[$dir][] = $val; // 遞歸繼續往下尋找 find_files($dir . '/' . $val, $dir_array); } else { // 不是目錄也需要將當前文件添加進數組 $dir_array[$dir][] = $val; } } } } // 調用 $folder_list = array(); find_files('/demo/', $folder_list); var_dump($folder_list);
