【问题标题】:how to count files in a folder php如何计算文件夹中的文件php
【发布时间】:2012-11-06 10:35:52
【问题描述】:

此代码仅显示目录,但我想显示文件夹内包含计数文件的目录

示例 统计文件夹内的文件数

  • 文件夹 A(找到 2 个文件)
  • 文件夹 B(找到 19 个文件)
  • 文件夹 D(找到 1 个文件)
  • FolderD(找到 13 个文件)

    function folderlist(){
      $startdir = './';
      $ignoredDirectory[] = '.'; 
      $ignoredDirectory[] = '..';
       if (is_dir($startdir)){
           if ($dh = opendir($startdir)){
               while (($folder = readdir($dh)) !== false){
                   if (!(array_search($folder,$ignoredDirectory) > -1)){
                     if (filetype($startdir . $folder) == "dir"){
                           $directorylist[$startdir . $folder]['name'] = $folder;
                           $directorylist[$startdir . $folder]['path'] = $startdir;
                       }
                   }
               }
               closedir($dh);
           }
       }
    return($directorylist);
    }
    
    
    $folders = folderlist();
        foreach ($folders as $folder){
        $path = $folder['path'];
        $name = $folder['name'];
    
    echo '<li><a href="' .$path .'index.php?album=' .$name . '" class="style1"><font face="Tahoma" class="ws10"><B>' . $name . '</B></a><br /></li>';
      }
    ?>
    

【问题讨论】:

    标签: php directory subdirectory dir


    【解决方案1】:

    使用 Sizeof()

    http://php.net/manual/en/function.sizeof.php

    <?php
        function folderlist(){
          $startdir = './';
          $ignoredDirectory[] = '.'; 
          $ignoredDirectory[] = '..';
           if (is_dir($startdir)){
               if ($dh = opendir($startdir)){
                   while (($folder = readdir($dh)) !== false){
                       if (!(array_search($folder,$ignoredDirectory) > -1)){
                         if (filetype($startdir . $folder) == "dir"){
                               $directorylist[$startdir . $folder]['name'] = $folder;
                               $directorylist[$startdir . $folder]['path'] = $startdir;
                           }
                       }
                   }
                   closedir($dh);
               }
           }
        return($directorylist);
        }
    
    
        $folders = folderlist();
    
            foreach ($folders as $folder){
            $path = $folder['path'];
            $name = $folder['name'];
    
    
    
        echo '<li><a href="' .$path .'index.php?album=' .$name . '" class="style1"><font face="Tahoma" class="ws10"><B>' . $name . '</B></a><br /></li>';
          }
          echo "Total Files:". sizeof($folders);
        ?>
    

    【讨论】:

    • 但我怎样才能将这段代码编辑到我的代码中>?我把这段代码放在哪里??
    • 亲爱的,我认为您不理解您的代码在一页中显示所有文件夹总数,但我想计算文件夹内的文件,例如文件夹 A(文件夹内有 21 个文件)文件夹 B(15 个文件)所以目录显示第一个文件夹名称,然后显示文件夹内的文件总数
    【解决方案2】:

    这样的事情应该可以帮助你:

    $count = iterator_count(new DirectoryIterator($path));
    

    http://au1.php.net/iterator_count

    所以:

    <?php
    function folderlist(){
      $directoryist = array();
      $startdir = './';
      $ignoredDirectory[] = '.';
      $ignoredDirectory[] = '..';
       if (is_dir($startdir)){
           if ($dh = opendir($startdir)){
               while (($folder = readdir($dh)) !== false){
                   if (!(array_search($folder,$ignoredDirectory) > -1)){
                     if (filetype($startdir . $folder) == "dir"){
                           $directorylist[$startdir . $folder]['name'] = $folder;
                           $directorylist[$startdir . $folder]['path'] = $startdir;
                       }
                   }
               }
               closedir($dh);
           }
       }
    return($directorylist);
    }
    
    
    $folders = folderlist();
    
    $total_files = 0;
    foreach ($folders as $folder){
        $path = $folder['path'];
        $name = $folder['name'];
        $count = iterator_count(new DirectoryIterator($path . $name));
        $total_files += $count;
    
        echo '<li>';
        echo '<a href="' .$path .'index.php?album=' .$name . '" class="style1">';
        echo '<strong>' . $name . '</strong>';
        echo ' (' . $count . ' files found)';
        echo '</a>';
        echo '</li>';
    }
      echo "Total Files:". $total_files;
    ?>
    

    【讨论】:

    • 错过了 direcotyiterator 的变量,现在已修复。我已经对此进行了测试,它按预期工作。
    • 请告诉我按时间排序文件夹的信息,例如我创建最后一个文件夹,然后在 1 日显示最后一个文件夹
    • 您最好为此打开另一个问题,因为这将允许该线程只存在一个问题。
    • 亲爱的你的代码计算错误我的文件夹有 13 个文件,但你的代码显示文件夹中有 15 个文件,我在这个目录中还有一个文件夹,文件夹是空白的,这个空白文件夹中没有任何文件,但你的代码显示 2找到的文件
    猜你喜欢
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 2016-02-25
    相关资源
    最近更新 更多