php scandir()函數排除特定目錄範例用法

怪我咯
發布: 2023-03-13 12:42:01
原創
2328 人瀏覽過

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(&#39;test_directory&#39;));
?>
登入後複製

輸出如下:

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 === &#39;.&#39; || $value === &#39;..&#39;){
            
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=&#39;/path/to/my/directory&#39;;
$scanned_directory=array_diff(scandir($directory),array(&#39;..&#39;,&#39;.&#39;));
?>
登入後複製

通常情況程式碼管理會產生. svn文件,或限制目錄存取權限的.htaccess等文件。所以透過array_diff函數來過濾會比較方便。

以上是php scandir()函數排除特定目錄範例用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!