PHP scandir函數介紹

一、概述

scandir() 函數用於返回指定目錄中的文件和目錄的數組。該函數返回一個數組,其中包括目標目錄中所有的文件和子目錄的名稱。該函數可接受倆個參數,第一個參數必選且為需要獲取文件和目錄的目標目錄,第二個參數為可選參數,表示列出的文件類型的規則,支持通配符匹配,也支持數組形式的匹配。如果執行失敗將返回 FALSE。

scandir()函數不會列出隱藏文件和文件夾。

二、函數語法

    scandir(directory,sorting_order)

參數:
– directory 必須。規定要搜索的目錄。
– sorting_order 可選。規定排序順序。可能的值:0 或 SORT_ASC – 默認。按英文字母升序排序;1 或 SORT_DESC – 按英文字母降序排序。

三、函數返回值

scandir() 函數返回指定目錄中的文件和目錄的數組。

四、使用示例

以下示例演示了如何使用 scandir() 函數。

    $dir = "/test/";
    $files1 = scandir($dir);//以默認方式掃描目錄
    $files2 = scandir($dir, 1);//按名稱反向掃描目錄

    print_r($files1);
    print_r($files2);

運行結果:

    Array
    (
        [0] => .
        [1] => ..
        [2] => file1.txt
        [3] => file2.txt
        [4] => dir1
    )
    Array
    (
        [0] => dir1
        [1] => file2.txt
        [2] => file1.txt
        [3] => ..
        [4] => .
    )

上述代碼先定義了一個目錄,然後使用 scandir() 函數掃描該目錄並返回目錄下的子目錄和文件名。同時,示例還展示了如何以不同的排序順序返回查找結果。

五、案例分析

1、列出目錄中指定類型的文件

scandir() 函數可以通過指定排序順序和文件類型規則來獲取指定類型的文件。例如:

    $dir = "/test/";
    $allowed = array('gif', 'jpeg', 'jpg', 'png');

    $files = array_diff(scandir($dir), array('.', '..'));
    $result = [];

    foreach($files as $file) {
        $ext = pathinfo($file, PATHINFO_EXTENSION);
        if(in_array($ext, $allowed)) {
            $result[] = $file;
        }
    }

    print_r($result);

在上述示例中,$allowed 數組指定了允許獲取的文件類型。scandir() 函數首先獲取指定目錄的所有文件和目錄,接着使用 array_diff() 函數將點(.)和雙點(..)排除。接下來,遍歷每個文件,提取每個文件的擴展名,如果允許的文件類型數組包含該擴展名,則將文件添加到結果數組中。

2、列出目錄中所有文件的元數據

scandir() 函數可以實現獲取目錄下所有文件的元數據。這個案例展示了如何使用 scandir() 和其他幾個信息查找函數實現。

    $dir = "/test/";
    $dirHandle = opendir($dir);
    $results = [];

    while (($file = readdir($dirHandle)) !== false) {
        if ($file !== '.' && $file !== '..') {
            //創建一個零時數組
            $info = array();
            $info['name'] = $file;

            // 檢查文件是否是目錄
            if (is_dir($dir . '/' . $file)) {
                $info['type'] = "Directory";
            } else {
                $info['type'] = "File";
            }

            $info['size'] = filesize($dir . '/' . $file);

            $info['last_accessed'] = fileatime($dir . '/' . $file);
            $info['last_modified'] = filemtime($dir . '/' . $file);

            //將數組添加到$results
            $results[] = $info;
        }
    }

    // 關閉目錄句柄
    closedir($dirHandle);

    // 顯示所有文件的元信息(字節數,上一次訪問時間,上次文件修改時間)
    foreach ($results as $result) {
        echo $result['name'] . ': ' . $result['type'] . ', Size: ' . $result['size'] . ', Last Accessed: ' . date("j F Y H:i:s", $result['last_accessed']) . ', Last Modified: '
            . date("j F Y H:i:s", $result['last_modified']) . '
'; }

在上述示例中,首先使用 opendir() 函數獲取目錄的處理句柄。然後遍歷該目錄中的每個文件並提取元數據,包括文件名、類型(文件或目錄)、大小、上一次訪問時間和上一次修改時間。最後,將文件元數據存儲在名為 $results 的數組中,並根據日期和時間格式使用 date() 函數顯示結果。

六、總結

scandir() 函數是 PHP 中一個強大的文件系統函數,可用於獲取指定目錄的所有文件和目錄。此函數非常適合獲取目錄內容,並此函數可以方便地過濾結果以獲取所需的內容。了解 PHP 文件系統函數的開發人員將能夠更好地管理他們的 web 應用程序並快速定位問題。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/248183.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:25
下一篇 2024-12-12 13:25

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字符串操作中,capitalize函數常常被用到,這個函數可以使字符串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 單片機打印函數

    單片機打印是指通過串口或並口將一些數據打印到終端設備上。在單片機應用中,打印非常重要。正確的打印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的打印數據可以幫助我們快速…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變量時顯示的指定變量類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29
  • 分段函數Python

    本文將從以下幾個方面詳細闡述Python中的分段函數,包括函數基本定義、調用示例、圖像繪製、函數優化和應用實例。 一、函數基本定義 分段函數又稱為條件函數,指一條直線段或曲線段,由…

    編程 2025-04-29

發表回復

登錄後才能評論