0

我的问题是一部分显示文件目录名称,而另一部分应该是这些目录中某些文件夹的文件计数。现在它列出了目录名称,但它只对第一个目录进行文件计数,而不对其他任何目录进行计数。我确实意识到目前的代码是用于 In Que 表标题下的计数,但如果我明白这一点,它将更容易用于其他类别。

但是是的,问题是我需要它从所有位置获取文件计数,而不仅仅是它找到的第一个文件路径。

这是代码:

<?php 
  if ($handle = opendir('Users/')) {
    $blacklist = array('.', '..', 'somedir', 'somefile.php');
    while (false !== ($file = readdir($handle))) {
      if (!in_array($file, $blacklist)) {
        $i = 0; 
        $dir    = 'Users/';
        $files1 = scandir($dir);
        $x = 1;
        while ($x <= 4 and $i <= 4){
          $x++;
          $dir1 = 'Users/'.$files1[$x].'/uploaded/';

          if ($handle1 = opendir($dir1)) {
            while (($file1[$x] = readdir($handle1)) !== false){
              if (!in_array($file1[$x], array('.', '..')) && !is_dir($dir1.$file1[$x]))

                $i++;


            }
          }

          $file."\n" == $option; ?>
          <table border='1px' style="border:thin;" cols="3">
              <th>Employee</th>
              <th>In Que</th>
              <th>Incomplete</th>
              <th>Processed</th>
              <?php
              echo "<tr>";
              echo "<td>";
              echo "$file\n";
              echo "</td>";
              echo "<td>".$i."</td>";
              echo "<td>" ."</td>";
              echo "<td>" ."</td>";
              echo "<tr>";
              echo "<br>";
              ?>
          </table>
          <?php

        }  
        // integer starts at 0 before counting
      }
    }
  } 
?>  
4

1 回答 1

0

你一进入循环就增加$x,所以你会错过$files1[1]开始......如果我没有误解这一点,你可以通过几个循环来实现。

$count = 0;
    $folders = @scandir('Users');  
    foreach($folders as $item){
        if (preg_match("/.*\.php$/",$item)) continue;
        if (is_dir("Users/$item")){
            $target_folders = @scandir("Users/$item/uploaded/");
            foreach($target_folders as $target_item){
                if ((!preg_match("/^[.]/",$target_item)) || (!is_dir("Users/$item/uploaded/$target_item"))) $count++;
        }
        }
    }
于 2013-09-17T19:42:55.713 回答