我在PHP中使用“DirectoryIterator”时的虚构文件夹?

时间:2015-06-08 10:45:59

标签: php

我想用PHP计算不同文件夹中的文件数。文件夹的名称是从1到26开头的数字。 我已经使用iterator_count()PHP函数来做到这一点。这就是我写的:

$noCoords = array();
for ($number = 1; $number <= 26; $number++) {
     $x = iterator_count(new DirectoryIterator('/Images/'.$number.'/file'));
     $noCoords[$number] = $x-2; // removing . and .. files
     array_push($noCoords,$x);
}

$noCoords=json_encode($noCoords);
echo($noCoords);

在我的网络应用程序中,我使用javascript来提醒json返回:

var noCoordsImages = function(){    
        $.get('requestsII/count_noCoords_images.php', function(data) {
            alert(data);
        });
    }

在这里,我遇到了问题。我没有得到带有26个输出(每个文件夹一个)的json的警报框,而是27.它甚至为第27个文件夹分配了一个值。在我的目录中没有名称为“27”的文件夹。 知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

让我说出这个答案:

对于每次迭代,由于array_push()

,您实际上正在向数组添加额外的记录

使用$noCoords[$number] = $x-2,您将添加索引1到26以及使用$number + 1创建额外条目后的行

那么会发生什么(假设您的文件夹25和26分别有100和90个文件):

$ index = 25:

$noCoords[25] = 98; // $noCoords[$number] = $x-2
$noCoords[26] = 100; // array_push($noCoords,$x);

$ index = 26:

$noCoords[26] = 88; // $noCoords[$number] = $x-2
$noCoords[27] = 90; // array_push($noCoords,$x);