scandir()傳回指定目錄中的檔案和目錄的陣列。 若成功則傳回檔案和目錄的陣列。失敗則回傳 FALSE。 如果 directory 不是目錄,則拋出 E_WARNING 等級的錯誤。
語法
scandir(directory,sorting_order,context);
#參數 | 描述 |
---|---|
directory | 必要。規定要掃描的目錄。 |
sorting_order |
#可選。規定排列順序。預設是 0,表示按字母升序排列。 如果設定為 SCANDIR_SORT_DESCENDING 或 1,則表示按字母降序排列。 如果設定為 SCANDIR_SORT_NONE,則傳回未排列的結果。 |
context | 可選。規定目錄句柄的環境。 context 是可修改目錄流的行為的一套選項。 |
範例: 程式碼如下:
<?php print_r(scandir('test_directory')); ?>
輸出如下:
Array ( [0]=>. [1]=>.. [2]=>1.txt [3]=>2.txt )
大部分情況只需要該目錄的檔案清單數組,如下:
Array ( [0]=>1.txt [1]=>2.txt )
一般是透過排除「.」或「..」的陣列項目解決的: 程式碼如下:
<?php functionfind_all_files($dir) { $root = scandir($dir); foreach ($rootas$value) { if($value === '.' || $value === '..'){ continue ; } if(is_file("$dir/$value")){ $result[] = "$dir/$value"; continue; } foreach(find_all_files("$dir/$value")as$value) { $result[] = $value; } } return $result; } ?>
另外一種方法,利用array_diff函數,剔除scandir函數執行得到的陣列:程式碼如下:
<?php $directory='/path/to/my/directory'; $scanned_directory=array_diff(scandir($directory),array('..','.')); ?>
通常情況程式碼管理會產生. svn文件,或限制目錄存取權限的.htaccess等文件。所以透過array_diff函數來過濾會比較方便。
以上是php scandir()函數排除特定目錄範例用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!