使用scandir时跳过所有文件夹

时间:2014-07-24 00:35:30

标签: php arrays scandir

我正在收集给定文件夹中的文件列表,其中可能有文件和文件夹。

我可以在需要时手动跳过文件夹,但是如何自动跳过所有文件夹并仅存储数组中的文件?

$moduleArray = array_diff(scandir('module/', 1), array('..', '.', 'admin'));

好吧,我得到了这个......但是在使用scandir进行搜索时有什么办法吗?

    foreach($moduleArray as $module) {
        $end = explode(".", $module);
        if(end($end) == "php") {
            $name = substr($module, 0, -8);
            echo " <a href=\"index.php?page=$name\"> $name </a><br />";
        }
    }

3 个答案:

答案 0 :(得分:2)

或者,您也可以使用SPL DirectoryIterator ->isDir()

$moduleArray = array();
foreach (new DirectoryIterator('module/') as $file) {
    if($file->isDir()) continue;
    $moduleArray[] = $file->getPathname(); // or getFilename()
}

答案 1 :(得分:1)

您可以搜索数组并删除文件夹; 这是我所知道的最佳方式: - )

 for($i=0;$i<count($moduleArray);$i++)
 {
   if(is_dir($moduleArray[$i])
   {
     //Skip It
   }
 }

答案 2 :(得分:1)

$moduleArray = array_diff(scandir('module/', 1), array('..', '.'));
$fileListArray = array();
foreach ($moduleArray as $module){
   if (!is_dir($module)){
      $fileListArray[] = $module;  
   }
}