php scandir()不显示文件-仅显示目录
我的目录结构如下: /文件php scandir()不显示文件-仅显示目录,php,scandir,Php,Scandir,我的目录结构如下: /文件 /文件/001 /files/001/addfile.php /文件/002 /files/002/deletefile.php /文件/003 /files/003/viewfile.php 我的剧本: error_reporting(E_ALL); $directory = 'files'; $files = scandir($directory); $xml = new DOMDocument('1.0', 'UTF-8'); $xmlFi
/文件/001
/files/001/addfile.php
/文件/002
/files/002/deletefile.php
/文件/003
/files/003/viewfile.php
我的剧本:
error_reporting(E_ALL);
$directory = 'files';
$files = scandir($directory);
$xml = new DOMDocument('1.0', 'UTF-8');
$xmlFiles = $xml->appendChild($xml->createElement('FILES'));
if(is_dir($directory)) {
print_r($files);
}
/*foreach($files as $file => $key) {
if($file == '.' || $file == '..') { continue; }
echo '$file: '.$file;
if(is_dir("$directory/$file")) {
$xmlDir->appendChild($xml->createElement($file));
}
else {
$xmlFiles->appendChild($xml->createElement('FILE', $file));
}
}*/
echo $xml->saveXML();
我的问题:打印($files)
输出:
排列(
[0] => .
[1] => ..
[2] => 001
[3] => 002
[4] =>003)
为什么scandir只输出目录而不输出文件
蒂亚,
Nate您的文件位于这些目录中,scandir只显示指定路径的内容,但不会重复出现,因此一切都是正确的 Scandir不会递归工作。它只扫描输入到其中的路径
您可以使用
递归迭代器
获取包含子目录列表的目录
下面是如何使用迭代器清空目录:
<?php
function empty_dir($dir) {
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir),
RecursiveIteratorIterator::CHILD_FIRST);
foreach ($iterator as $path) {
if ($path->isDir()) {
// do something with directory
// rmdir($dir);
} else {
//doo something with files
// unlink($path->__toString());
}
}
// rmdir($dir);
}
?>
每个数组元素的索引号:$file:0$file:1$file:2$file:3$file:4这样scandir就不会深入目录结构了?我真的很想知道为什么在将近三年后,你决定撤销对我答案的认可,并接受了自己的答案。它不会给你任何声誉点,更不用说你看起来不太严肃