首頁  >  文章  >  後端開發  >  php scandir()函數排除特定目錄範例用法

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

怪我咯
怪我咯原創
2017-07-10 16:03:182323瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn