PHP 是一種非常流行的程式語言,可以用它來實現各種各樣的操作。其中,遍歷資料夾並取得其中的文件資訊是經常需要用到的操作。在本文中,我將介紹如何用 PHP 實作資料夾遍歷。
opendir() 函數是 PHP 用來開啟資料夾的函數,在呼叫函數時需要傳入資料夾路徑作為參數。在資料夾開啟成功後,可以透過 readdir() 函數讀取資料夾中的內容。
範例程式碼:
$dir = './test'; //文件夹路径 $handle = opendir($dir); //打开文件夹 while ($file = readdir($handle)) { //循环读取所有文件 if ($file != "." && $file != "..") { //排除"."和".."两个特殊的文件夹 echo $file."<br>"; //输出文件名 } } closedir($handle); //关闭文件夹
在上面的範例程式碼中,我開啟了一個名為「test」 的資料夾,並循環讀取了該資料夾中的所有檔案名,並忽略了“.” 和“..” 兩個特殊的資料夾。
如果要遍歷一個目錄下的所有子目錄和文件,我們可以使用遞歸方法。在遍歷過程中,我們還需要判斷目前遍歷到的是資料夾還是文件,可以使用 is_dir() 函數來進行判斷。
範例程式碼:
function scanDir($dir){ if(!is_dir($dir)){ echo '不是一个有效的文件夹路径'; return; } $handle = opendir($dir); //打开文件夹 while($file = readdir($handle)){ //循环读取所有文件 if($file == '.' || $file == '..'){ //忽略掉 ".",".." 特殊文件夹 continue; } $path = $dir.'/'.$file; //当前文件或文件夹的完整路径 if(is_dir($path)){ //如果是一个文件夹 echo '<b>'.$file.'</b><br>'; //输出文件夹名称 scanDir($path); //递归遍历子文件夹 }else{ //如果是一个文件 echo $file.'<br>'; //输出文件名称 } } closedir($handle); //关闭文件夹 }
在上面的範例程式碼中,我定義了一個函數 scanDir()
,該函數接受一個資料夾路徑作為參數。在函數內部,我先判斷傳入的路徑是否為資料夾。如果不是資料夾,則直接傳回。
接下來,我打開資料夾,並循環讀取其中的檔案和資料夾。當遍歷到資料夾時,我會輸出資料夾名稱,並遞歸呼叫 scanDir()
函數遍歷子資料夾。當遍歷到文件時,我只是輸出文件名稱。
PHP 也提供了一個非常簡單的函數scandir()
,可以用來一次取得一個資料夾下的所有文件和資料夾名稱。和 opendir()
函數不同的是,該函數傳回的是一個數組,數組中包含了所有子資料夾和檔案的名稱。
範例程式碼:
$dir = './test'; //文件夹路径 $files = scandir($dir); //获取文件夹下所有文件和文件夹名称 foreach($files as $file){ //循环遍历 if($file == '.' || $file == '..'){ //忽略掉 ".",".." 特殊文件夹 continue; } echo $file.'<br>'; //输出文件或文件夹名称 }
在上面的範例程式碼中,我呼叫了scandir()
函數取得了資料夾下所有檔案和資料夾名稱,並循環遍歷了這個陣列。同樣地,我忽略了兩個特殊的資料夾 “.” 和 “..”,只輸出了資料夾和檔案的名稱。
總結
在本文中,我介紹如何用 PHP 實作資料夾遍歷,並示範了三種不同的方式。透過 opendir() 和 readdir() 函數,我們可以循環讀取一個資料夾下的所有檔案和資料夾,並透過判斷檔案類型進行對應的操作。透過遞歸遍歷,我們可以遍歷一個目錄下的所有子目錄和檔案。透過 scandir() 函數,我們一次取得了一個資料夾下的所有子資料夾和檔案名稱。如果您需要在 PHP 中遍歷資料夾,希望本文可以為您提供一些參考。
以上是php 實作資料夾遍歷的詳細內容。更多資訊請關注PHP中文網其他相關文章!