数组输出无法正确读取

时间:2013-09-17 19:01:23

标签: php arrays variables sorting directory

我的问题是,一个部分显示文件目录名称,其他部分应该是这些目录中某些文件夹的文件计数。现在它列出了目录名称,但它只在第一个目录上进行文件计数,而不是在任何其他目录上进行。我确实知道目前的代码是针对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
      }
    }
  } 
?>  

1 个答案:

答案 0 :(得分: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++;
        }
        }
    }