|
|
|
|
|
|
在使用PHP編程遍歷目錄文件時,我們一般可以使用readdir()或scandir()來實現(xiàn),不過本文要說的是,盡量使用scandir()而不是readdir()遍歷目錄文件,理由是scandir()用到的代碼量少很多。

使用scandir()而不是readdir()遍歷目錄文件
下面使用readdir()函數(shù)的代碼可以獲得某一特定目錄的所有文件、文件夾,包含符號點(.)和兩點(..)。
if ($handle = opendir('.')) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
echo "$entry\n";
}
}
closedir($handle);
}上述代碼可獲得同級目錄里的所有文件、文件夾,包含符號點(.)和兩點(..)。
1、下面使用scandir()函數(shù)的代碼可以獲得某一特定目錄的所有文件、文件夾,包含符號點(.)和兩點(..)。
$path = 'images';
$files = scandir($path);
注意,這里返回的是一個數(shù)組$files,我們可以用print_r($files);把數(shù)組打印出來。而要讀取數(shù)組里的元素,我們可以用如下代碼。
for ($x = 0; $x < count($files); $x++) {
echo $files[$x]."\n";
}2、如果想在scandir()函數(shù)獲得的數(shù)組中不含符號點(.)和兩點(..),那么可以用如下簡潔代碼。
$files2 = array_diff(scandir($path), array('.', '..'));3、scandir()函數(shù)獲得的數(shù)組元素默認(rèn)排列是升序,如果想要降序排列,那么可以用如下代碼。
$files = scandir($path,1);
4、關(guān)于返回值
若成功則返回文件和目錄的數(shù)組。失敗則返回 FALSE。如果 directory 不是目錄,則拋出 E_WARNING 級別的錯誤。
