Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php scandir()不显示文件-仅显示目录_Php_Scandir - Fatal编程技术网

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就不会深入目录结构了?我真的很想知道为什么在将近三年后,你决定撤销对我答案的认可,并接受了自己的答案。它不会给你任何声誉点,更不用说你看起来不太严肃