即时使用scandir()来检查目录文件,它可以正常使用来自root的路径,如/ dir1 / dir2 / ....(dir1不在我的.php文件后面,它是root文件夹)
但是当在同一路径上使用is_dir和is_file时,它会输出错误的结果
我该如何解决这个问题?
答案 0 :(得分:0)
请尝试此
function getDirContents($dir) {
$handle = opendir($dir);
if (!$handle) return array();
$contents = array();
while $entry = readdir($handle)) {
if ($entry=='.' || $entry=='..') continue;
$entry = $dir.DIRECTORY_SEPARATOR.$entry;
if (is_file($entry)) {
$contents[] = $entry;
} else if (is_dir($entry)) {
$contents = array_merge($contents, getDirContents($entry));
}
}
closedir($handle);
return $contents;
}
$directoryPath = 'Path to folder';
$getDirContents = getDirContents($directoryPath);
echo "<pre>";
print_r(getDirContents );
echo "</pre>";
答案 1 :(得分:0)
只需看看PHP自己的DirectoryIterator对象,它比单个函数更快,更详细。
$dir = new DirectoryIterator(dirname(__FILE__));
foreach ($dir as $fileinfo) {
if (!$fileinfo->isDot()) {
var_dump($fileinfo->getFilename());
}
}
这段代码直接从文档中删除。它获取当前执行文件的当前目录并迭代它。只要当前的$ fileinfo不是一个点,它就会转储该目录中文件和子目录的文件名。