|
|
|
|
|
在使用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ù)組元素默認排列是升序,如果想要降序排列,那么可以用如下代碼。
$files = scandir($path,1);
4、關(guān)于返回值
若成功則返回文件和目錄的數(shù)組。失敗則返回 FALSE。如果 directory 不是目錄,則拋出 E_WARNING 級別的錯誤。