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