php readdir 函數(shù)是一個(gè)非常常用的文件處理函數(shù),主要功能是讀取一個(gè)目錄下的所有文件和文件夾。使用該函數(shù)可以方便地讀取一個(gè)目錄下的所有元素。
該函數(shù)使用方法如下:
$handle = opendir($path); while (false !== ($file = readdir($handle))) { echo "$file\n"; } closedir($handle);
其中,$path 表示要讀取的目錄,$handle 表示目錄句柄,readdir 函數(shù)的結(jié)果是目錄中的下一項(xiàng)。如果沒有下一項(xiàng),則返回 false。
舉例說明,假設(shè)我們有一個(gè)名為 “images” 的目錄,其中包含兩個(gè)文件和一個(gè)文件夾:
images/ ├── cat.jpg ├── dog.png └── folder ├── flower.jpg └── tree.png
我們可以使用 readdir 函數(shù)來讀取該目錄中的所有文件和文件夾:
$handle = opendir("images"); while (false !== ($file = readdir($handle))) { echo "$file\n"; } closedir($handle); /* 輸出結(jié)果: . .. cat.jpg dog.png folder */
可以看到,輸出結(jié)果中包含了當(dāng)前目錄 “.”、上一級(jí)目錄 “..”、以及目錄中的所有文件和文件夾。
我們也可以通過判斷讀取到的元素是文件還是文件夾來進(jìn)行不同的操作:
$handle = opendir("images"); while (false !== ($file = readdir($handle))) { if(is_file($file)){ echo "$file is a file\n"; } elseif(is_dir($file)){ echo "$file is a directory\n"; } } closedir($handle); /* 輸出結(jié)果: cat.jpg is a file dog.png is a file folder is a directory */
上述代碼中,使用 is_file 函數(shù)判斷讀取到的元素是否為文件,如果是文件,則打印 “xxx is a file”;使用 is_dir 函數(shù)判斷讀取到的元素是否為文件夾,如果是文件夾,則打印 “xxx is a directory”。
需要注意的是,在使用 readdir 函數(shù)讀取目錄時(shí),如果目錄中包含 “.” 和 “..” 兩個(gè)特殊目錄,需要先將它們排除掉,否則會(huì)影響到代碼的正常執(zhí)行:
$handle = opendir("images"); while (false !== ($file = readdir($handle))) { if($file != "." && $file != ".."){ echo "$file\n"; } } closedir($handle); /* 輸出結(jié)果: cat.jpg dog.png folder */
從上述例子中可以看出,使用 readdir 函數(shù)可以幫助我們快速讀取一個(gè)目錄下的所有文件和文件夾,并進(jìn)行相應(yīng)的操作。同時(shí),也需要注意特殊目錄 “.” 和 “..” 的存在,避免影響程序的執(zhí)行。