我想用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”的文件夹。 知道为什么会这样吗?
答案 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);